我有这样的查询:
galleryModel.find({_id: galleryId})
.populate({
model: 'User',
path: 'objectId',
select: 'firstName lastName'
})
objectId
的结束响应如下:
objectId: {
...
}
如何在不改变实际路径的情况下将其更改为 user
作为响应?
最佳答案
您可以通过 mongoose 4.5 版中引入的虚拟填充来完成此操作。为此,您需要在 Mongoose 模式中定义一个虚拟字段。
var GallerySchema = new mongoose.Schema({
name: String,
objectId: {
type: mongoose.Schema.Types.ObjectId
},
});
GallerySchema.virtual('user', {
ref: 'User',
localField: 'objectId',
foreignField: '_id'
});
Ans 当你运行查找查询时,只需用用户填充它。
Gallry.find({_id: galleryId}).populate('user','firstName lastName').exec(function(error, gallery) {
console.log(error);
console.log(gallery);;
});
以上代码未在程序中测试,可能有错别字,您可以在下面的链接上获得有关 mongoose virtual populate 的更多详细信息
关于node.js - 如何重命名路径以响应填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38484504/