当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 如何重命名路径以响应populate

来源:互联网 收集:自由互联 发布时间:2021-06-16
我有这样的查询: 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

网友评论