Grapeoff
@Grapeoff
В чём концепция...?

Почему мне выдаёт ошибку, хотя никакой ошибки нет?

TypeError: Mongoose maps only support string keys, got undefined


Почему-то получаю такую ошибку при любом раскладе, хотя нигде никакой ошибки нет, а самое смешное, что точно такой-же код работает в моём Express проекте.

У меня есть модель ученика, там много полей, но нас интересует лишь одно:
export default class Pupil extends TimeStamps {
    @prop({ type: () => Map, required: false, default: new Map() })
    localSchedule: Map<string, Schedule[]>;
}


Есть функция, которая прикрепляет расписание группы к ученикам этой группы
private inheritGroupSchedule(
        pupils: DocumentType<Pupil>[],
        group: DocumentType<Group>,
        schedule: Schedule[]
    ) {
        pupils.forEach(async pupil => {
            pupil.localSchedule.set(group.id, schedule);

            await pupil.save();
        });
    }


И именно этот блок кода pupil.localSchedule.set(group.id, schedule);
по каким-то причинам вызывает ошибку
TypeError: Mongoose maps only support string keys, got undefined


Даже если допустить, что group.id === undefined, то тогда может, если я захардкожу туда какую-то строку, то всё починится? - Нет.

Вот скриншот всего этого неотлаживаемого ужаса:60de79d8cf2cc412459821.png
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
Grapeoff
@Grapeoff Автор вопроса
В чём концепция...?
Я понятия не имею, почему это работает, а предыдущий вариант — нет, но мне помогло заменить тип с Map, на Schema.Types.Mixed

Т.е.

export default class Pupil extends TimeStamps {
    @prop({ type: Schema.Types.Mixed, required: false, default: new Map() })
    localSchedule: Map<string, Schedule[]>;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы