gpt4 book ai didi

node.js - Nodejs Mongoose 获取属性值的结果数组

转载 作者:可可西里 更新时间:2023-11-01 10:40:25 27 4
gpt4 key购买 nike

如何在没有对象结构的情况下获取属性值数组。这是我的模式

  _id: {
type: Schema.Types.ObjectId,
ref: "User"
},

services: [{
_id:false,
service_category: {

type: Schema.Types.ObjectId,
ref: "ServiceCategory"
},
sub_services :[{
_id:false,
service : {
type: Schema.Types.ObjectId,
ref: "Service"
}
}]
}]

这就是我要查询结果的方式

 Vendor.find({ '_id': req.user._id, 'services.service_category':req.body.category_id},'services.sub_services.service').exec(function (err, rtnobj) {
if (err) {
console.log(err);
return (err);
}
else{
res.send(rtnobj);
}
})

但它给了我这个输出

[
{
"_id": "598b28271a0b551af8fbf849",
"services": [
{
"sub_services": [
{
"service": "service 1 _id"
},
{
"service": "service 2 _id"
}
]
}
]
}
]

但我需要以下格式的结果

[ "service 1 _id", "service 2 _id",......]

是否有任何标准方法可以做到这一点。或者任何替代方法

谢谢

最佳答案

如果你想使用查询,那么你最好继续做你现在做的,然后映射结果:

 Vendor.find({ '_id': req.user._id, 'services.service_category':req.body.category_id},'services.sub_services.service').exec(function (err, rtnobj) {
res.send(rtnobj.services.sub_services.map(each => each.service))
})

您也可以使用聚合框架来做类似的事情。但我认为以上内容是最惯用的。

关于node.js - Nodejs Mongoose 获取属性值的结果数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45633312/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com