我在 MEAN 应用程序中返回特定数据时遇到问题。我试图只返回我的猫鼬模式(发票)的特定部分。我目前正在通过它的 ID 获取特定的发票,然后我试图检查发票是否在嵌套数组中包含“invoiceType”这等于一个特定的参数。
我试过使用 find({'_id': userId}, {'services.serviceType': 'one'}),但它返回两种服务类型,无论是 serviceType 是一还是二。
// This is my array.. I'm trying to return the serviceType and serviceDescription if serviceType is equal to 'one'
{
'id': number,
'fistName': string,
'services': [
'serviceType': string
'serviceDescription': string
]
}
// here is my express code where i'm trying to make the call
Invoice.find({'_id': invoice_id},{'services.serviceType': 'one'})
.then(invoice => {
res.json(invoice)
});
您需要使用 $elemMatch 搜索内部数组,如下所示:
Invoice.findOne({ '_id': invoice_id }, { 'services': { $elemMatch: { "serviceType": "one" } } })
.then(invoice => {
res.json(invoice)
})
.catch(err => {
console.log(err);
return res.status(500).send("someting went wrong");
});
如果你想从响应中过滤其他 serviceTypes,你可以像这样过滤它们:
Invoice.findOne({ '_id': invoice_id }, { 'services': { $elemMatch: { serviceType: "one" } } })
.then(invoice => {
if (!invoice) {
return res.status(404).send("Not found");
}
let filteredServiceTypes = res.services.filter(s => s.serviceType === "one");
invoice.services = filteredServiceTypes;
return res.json(invoice);
}).catch(err => {
console.log(err);
return res.status(500).send("someting went wrong");
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句