提问人:P K Dhee Taal 提问时间:8/21/2023 更新时间:8/21/2023 访问量:68
在 NodeJs 中向对象添加属性和值
Adding properties and values to an object in NodeJs
问:
努力向 NodeJs 中从 mongoDB 数据库返回的对象添加额外的属性和值
这是一个 nodeJs 项目。MongoDB 数据库的购物车表中存储的项目很少。 体系结构是,从购物车表中获取商品,然后使用 id 从商品表中获取有关商品的全部详细信息,并查看它们是否仍作为商品存在。
购物车中的商品几乎没有额外的属性,例如计数和过滤器,我想将其添加到商品表中返回的商品中。 我遵循以下方法来实现此功能。 但它没有按预期工作。 有人可以帮我吗?
代码结构如下:
router.get("/", userAuth, async (req, res, next) => {
try {
console.log("running");
const { _id } = req.userInfo;
const cartItems = await getAllCartItems(_id);
const carts = [];
for (const item of cartItems) {
const cartItem = await getItemById(item.itemId);
if (cartItem?._id) {
cartItem.count = item.count;
cartItem.filter = item.filter;
carts.push(cartItem);
}
// console.log(cartItem);
}
carts.length >= 0 &&
res.json({
status: "success",
message: "cart items are returned",
carts,
});
} catch (error) {
next(error);
}
});
答:
1赞
Samip
8/21/2023
#1
const cartItem = await getItemById(item.itemId);
此时的 cartItem 是一个 Mongoose 文档,而不是一个常规的 JSON 对象。
解决此问题的一种方法是首先将 cartItem 转换为 JSON 字符串,并允许您根据需要修改键值对。
您可以通过以下方式做到这一点:
const cartItemv2 = JSON.stringify(carItem);
这会将 Mongoose 模型(javascript 值)转换为 JSON 字符串。
如果您希望在将值添加到购物车之前对其进行解析,可以按如下方式实现:
const cartItemv2 = JSON.parse(JSON.stringify(cartItem));
这将构造一个 JavaScript 值/对象,该对象由字符串描述,在本例中为 输出JSON.stringify(cartItem);
1赞
Monarth Sarvaiya
8/21/2023
#2
如果你使用 ,那么你可以用它来获取普通对象。mongoose
lean()
例如:
const car = await Car.findOne().lean();
然后,您可以添加属性:
car['new_prop'] = 'new_data';
评论
0赞
nimrod serok
8/21/2023
这是此类情况的常见做法(不是所选答案)
上一个:从复杂的嵌套数组中提取值
下一个:对象“嵌套”?
评论
mongoose
getItemById()