【发布时间】:2021-11-19 04:22:00
【问题描述】:
基本上,我想从其中 pincode 字段(在 Location 数组中)与 req.body 匹配的集合中获取数据
我得到了我想要的输出,但我不确定它是否是一种优化的方式(查看 Mongoose 查询部分)
这是我的 Json:
{
"_id" : ObjectId("6115b2cc1681596a10072f97"),
"vendorStatus" : "Active",
"name" : "harshit singh bhutani",
"email" : "sharsh2106@gmail.com",
"vId" : 12121,
"contact" : 121212,
"cities" : "dell",
"isMidnight" : "NA",
"location" : [
{
"delivery" : 1266,
"dc" : "High",
"midnight" : "Active",
"isLive" : "NA",
"_id" : ObjectId("612433c27292d11154bc4d4d"),
"pincode" : 123100,
"city" : "dek"
},
{
"delivery" : 23,
"dc" : "High",
"midnight" : "Active",
"isLive" : "NA",
"_id" : ObjectId("612441473cb5766a2457d6db"),
"pincode" : 1212,
"city" : "dd"
}
],
"createdAt" : ISODate("2021-08-12T23:46:20.407Z"),
"updatedAt" : ISODate("2021-09-03T10:51:34.756Z"),
"__v" : 73
}
这是我在 Mongoose 中的查询:
const { pin } = req.body;
const vendor = await Vendor.find({ vendorStatus: "Active" });
const pincode = vendor.map((item) => {
return item.location.find((i) => {
if (i.pincode === Number(pin) && i.isLive === "Active") {
return i;
}
});
});
const pincodefound = pincode.filter(Boolean);
if (pincodefound.length === 0) {
res.status(404);
throw Error("Product is not Deliverable at this Pincode");
} else {
return res.json({
pincodefound,
});
}
首先我使用 map 进行迭代,然后我使用 find 来获取匹配的 pincode,之后我得到带有输出和 null 值的数组,所以我使用 filter 来只获取 pincode 虽然我得到了我想要的输出但我仍然不确定它是否是一种优化的方法。
【问题讨论】:
标签: javascript node.js mongodb mongoose mern