Поиск массива объектов для соответствия objectId из mongodb - PullRequest
1 голос
/ 06 января 2020

Я пытаюсь найти массив объектов по ключу, который содержит вложенный идентификатор объекта для заполнения.

Мой объект


{
  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
    },
  ],

Я хочу соответствовать, если тележки массив, содержит корзину с продуктом, который добавляет пользователь, чтобы не добавлять его второй раз, а вместо этого увеличивать количество существующего.


Мой код

  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);
  }

1 Ответ

2 голосов
/ 06 января 2020

Я думаю, что проблема в этой строке

  return o.product === producto._id

Можете ли вы изменить это так и попробовать?

  return o.product.toString() === producto._id.toString()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...