Определение типа схемы модели Mon goose как ObjectId с исключением - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть следующая схема задачи:

const taskSchema = new mongoose.Schema({
  description: {
    type: String,
    required: true,
    trim: true
  },
  folder: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Folder'
  },
  ...
}

Когда пользователь создает задачу в клиенте, он может выбрать, к какой папке принадлежит эта задача. Папки также создаются с собственной схемой. Тем не менее, когда пользовательские папки извлекаются, на стороне клиента я внедряю другую папку по умолчанию, которая называется «Все задачи», и она имеет идентификатор 0. Поэтому, если пользователь не выбирает папку (что в порядке), значение 0 передается как удостоверение личности. Вот где я получаю сообщение об ошибке, так как Mon goose не может привести 0 к ObjectId.

"Ошибка проверки задачи: папка: Ошибка приведения к ObjectID для значения \" 0 \ " по пути \ "folder \" "

Помимо определения типа папки как String или Schema.Types.Mixed, есть ли другие возможные решения?

1 Ответ

0 голосов
/ 08 февраля 2020

Так что я закончил тем, что изменил список возвращенных папок на стороне сервера вместо того, чтобы делать это на стороне клиента.

await req.user.populate({
    path: 'folders',
    match: {},
    options: {
      sort: {
        name: 1
      },
      collation: {
        locale: 'en'
      }
    }
  }).execPopulate()
  req.user.folders.unshift({
    _id: new mongoose.Types.ObjectId(),
    name: 'All tasks',
    owner: req.user._id
  })
  res.send(req.user.folders)

Конечно, это потребовало некоторого чередования кода на стороне клиента, но теперь все кажется работать как положено.

...