我有这样的查询: galleryModel.find({_id: galleryId}) .populate({ model: 'User', path: 'objectId', select: 'firstName lastName' }) objectId的结束响应如下: objectId: {...} 如何在不改变实际路径的情况下将其更改为
galleryModel.find({_id: galleryId}) .populate({ model: 'User', path: 'objectId', select: 'firstName lastName' })
objectId的结束响应如下:
objectId: { ... }
如何在不改变实际路径的情况下将其更改为用户响应?
您可以通过mongoose 4.5版中引入的virtual populate来完成此操作.为此,您需要在mongoose模式中定义虚拟字段.var GallerySchema = new mongoose.Schema({ name: String, objectId: { type: mongoose.Schema.Types.ObjectId }, }); GallerySchema.virtual('user', { ref: 'User', localField: 'objectId', foreignField: '_id' });
当你运行查询查询时,只需用用户填充它.
Gallry.find({_id: galleryId}).populate('user','firstName lastName').exec(function(error, gallery) { console.log(error); console.log(gallery);; });
以上代码未在程序中测试,可能存在拼写错误,您可以在下面的链接中获取有关mongoose虚拟填充的更多详细信息
http://mongoosejs.com/docs/populate.html