Динамически обновлять массив в поддокументе с помощью Mongoose - PullRequest
0 голосов
/ 27 октября 2018

Мне нужно обновить поле массива в под-документе, и это работает

User.findOne({ _id: id }, (err, user) => {
    if (!user) res.json({ error: "Email has not be found" });
    user.set({ "files.0.approved": isApproved });
    user.save((err, updatedUser) => {
      return res.send(updatedUser);
    });
 });

Тем не менее, мне интересно, как я могу сделать его динамичным? Так как здесь я передаю индекс вручную - files.0.approved.

Я пытался использовать строки шаблона, но он жалуется.

Я также пытался сослаться здесь , но не смог понять это.

Если мы предположим, что я могу получить индекс массива с помощью req.body.index, как предотвратить его жесткое кодирование?

1 Ответ

0 голосов
/ 27 октября 2018

Мне удалось сделать это таким образом.

 User.findOneAndUpdate(
    { _id: id, "files._id": file_id },
    { $set: { "files.$.approved": isApproved } },
    (err, updatedUser) => {
      if (err) res.json({ error: "Something went wrong" });
      res.json({ message: "success" });
    }
  );

Очевидно, вы изначально находите файл, который нужно обновить, а затем у mongoose есть оператор $, который указывает на найденный индекс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...