gpt4 book ai didi

javascript - 搜索对象数组以匹配来自 mongodb 的 objectId

转载 作者:行者123 更新时间:2023-11-30 13:44:15 25 4
gpt4 key购买 nike

我正在尝试通过包含用于填充的嵌套对象 ID 的键来搜索对象数组。

我的对象


{
service: 'user',
isModerator: true,
isAdmin: true,
carts: [
{
_id: 5e1344dcd4c94a1554ae0191,
qty: 1,
product: 5e09e4e0fcda6f268cefef3f,
user: 5e0dda6d6853702038da60f0,
expireAt: 2020-01-06T14:31:56.708Z,
__v: 0
},
{
_id: 5e13455306a54b31fc71b371,
qty: 1,
product: 5e09e507fcda6f268cefef40,// object ID
user: 5e0dda6d6853702038da60f0,
expireAt: 2020-01-06T14:33:55.573Z,
__v: 0
},
],

我想匹配 carts 数组是否包含带有用户正在添加的产品的购物车,而不是第二次添加它,而是增加现有产品的数量。


我的代码

  const itemId = req.body._id;
const userId = req.user._id;
const { qty } = req.body;
try {
const producto = await Product.findById(itemId);
const user = await User.findById(userId).populate({
path: 'carts',
});
const result = user.carts.find((o) => {
console.log(typeof o.product) // returns object
console.log(typeof producto._id); // returns object
return o.product === producto._id
});
console.log(result); // returns undefined
if (result !== undefined) {
const foundCart = await Cart.findById(result._id);
foundCart.qty += qty;
await foundCart.save();
return res.json({ message: 1 });
}
const newCart = new Cart({
qty,
product: producto,
user,
});
const cart = await newCart.save();
user.carts.push(cart);
await user.save();
return res.json({ message: 1 });
} catch (error) {
return console.log(error);
}

最佳答案

我认为问题出在这一行

  return o.product === producto._id

你能不能改成这样试试?

  return o.product.toString() === producto._id.toString()

关于javascript - 搜索对象数组以匹配来自 mongodb 的 objectId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59614164/

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