我想将一个猫鼬作为JSON对象填充到一个虚拟字段中,但是它总是返回一个包含单个项目的数组。
这是我的方案代码(带有虚拟字段):
Order.virtual('client', {
type: 'ObjectId',
ref: 'User',
localField: 'clientId',
foreignField: '_id'
});
这是我的人口方法:
Order.findOneAndUpdate({ internalStatus: 2}, { internalStatus: 3 })
.lean()
.populate({ path: 'client', select: 'email' })
.exec(function (err, order) {
//...
});
这是我在返回的JSON中收到的内容:
{ _id: 5ad903d90443fe13b8c9061a,
client: [ { _id: 5b3755fe69635d1e942d00a8, email: 'user@user.com' } ] }
这是我想要实现的:
{ _id: 5ad903d90443fe13b8c9061a,
client: { _id: 5b3755fe69635d1e942d00a8, email: 'user@user.com' } }
感谢您的帮助或建议!
答案 0 :(得分:0)
在猫鼬mongoose@5.0.17中,我看到它们以JSON_OBJECT的形式返回,但是当我升级到mongoose@5.3.0时,它开始重新调整为JSON_ARRAY
答案 1 :(得分:0)
您必须在虚拟字段配置中添加“ justOne:true ”:
Order.virtual('client', {
type: 'ObjectId',
ref: 'User',
localField: 'clientId',
foreignField: '_id',
justOne : true
});