Возможно ли даже заполнение поля с типом массива ObjId? - PullRequest
0 голосов
/ 27 августа 2018

Я сталкивался с этим проводным поведением при попытке заполнить поля тегов и категорий.

часть модели изделия

tags: {
    type: [mongoose.Schema.Types.ObjectId],
    index: true,
    ref: 'tag'
},

categories: {
        type: [mongoose.Schema.Types.ObjectId],
        index: true,
        ref: 'category'
    }

при попытке заполнить эти три поля только авторские работы, так как это не массив объектов

    .populate('author')
    .populate('tags')
    .populate('categgories')

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

Mongoose: users.find({ _id: { '$in': [ ObjectId("5b83eacb51e2d33dd5c057ad") ] } }, { fields: { name: 1 } })
Mongoose: articles.find({ _id: { '$in': [ ObjectId("5b83eac851e2d33dd5c057ab") ] } }, { fields: { _id: 1 } })
Mongoose: articles.find({ _id: { '$in': [ ObjectId("5b83eac951e2d33dd5c057ac") ] } }, { fields: {} })

1 Ответ

0 голосов
/ 27 августа 2018

Да, это возможно.

Но вы должны указать мангусту, какую модель искать

populate({path:"path",model:"model"})

в противном случае mongoose выполнит запрос на поиск в родительской модели, а не в дочернем, отметив, что этот подход требуется только в случае массива

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...