node.js - 如何重命名路径以响应填充

标签 node.js mongodb mongoose mongoose-populate

我有这样的查询:

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 的更多详细信息

http://mongoosejs.com/docs/populate.html

关于node.js - 如何重命名路径以响应填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38484504/

相关文章:

javascript - 为什么 fs.readFile 在包含回调作为参数时需要包装器?

javascript - 使用 mongodb 和 node js 制作一个有历史的聊天系统

node.js - 从nodejs读取受密码保护的excel文件

node.js - 在 Postgres 和 Node 之间加密/解密

arrays - 如何编写查询对象内部数组的mongo查询?

regex - 无法在聚合查询中使用 mongoose 中的 $regex?

mongodb - Mongoose 中的嵌套对象模式

javascript - 为什么这个 `Promise.all()` 语句不等待 promise 解决?

mongodb - 在 MongoDB 上设置 SSL 后,https 请求不起作用,但 http 可以

javascript - mongoose 和 nodejs 的 mongodb 连接超时错误