#node.js #mongoose
Вопрос:
Это мои схемы:
user.js
'use strict' const { models, model, Schema } = require('mongoose') const schema = new Schema( { name: { type: String, required: true, }, }, { timestamps: true, discriminatorKey: 'type', } ) schema.virtual('posts', { ref: 'Post', localField: '_id', foreignField: 'user', }) module.exports = models.User|| model('User', schema)
post.js
'use strict' const { models, model, Schema } = require('mongoose') const schema = new Schema( { text: { type: String, required: true, }, user: { type: Schema.Types.ObjectId, ref: 'User', required: true, }, }, { timestamps: true, discriminatorKey: 'type', } ) module.exports = models.Post|| model('Post', schema)
И запрос:
const user = await UserModel.findById(req.params.id).populate('posts')
Я не знаю, что я делаю не так, но заполнение ничего не возвращает
Я включаю свой флаг отладки мангуста, чтобы проверить, что такое запрос для виртуального заполнения, и вижу это на своем терминале:
Mongoose: users.findOne({ _id: new ObjectId("6182fce8c339b6f51c933eee") }, { projection: {} }) Mongoose: posts.find({ user: { '$in': [ new ObjectId("6182fce8c339b6f51c933eee") ], [Symbol(mongoose#trustedSymbol)]: true }}, { skip: 0, limit: 10, perDocumentLimit: undefined, projection: {} })
Я снова выполняю запрос вручную
const posts = await PostModel.find({credential: { $in: [Types.ObjectId(req.params.id)]}})
и возвращать данные :/
и печать терминала:
Mongoose: posts.find({ user: { '$in': [ new ObjectId("6182fce8c339b6f51c933eee") ] } }, { projection: {} })