Как мне заполнить недавно созданный документ mon goose? - PullRequest
1 голос
/ 29 января 2020

У меня есть случай, когда я проверяю, существует ли документ, и если он не существует, я создаю новый документ. Мне нужно заполнить 2 поля внутри документа. Моя проблема в том, что метод .populate не поддерживается в методе .create , поскольку я получаю сообщение об ошибке, если пытаюсь это сделать. Кроме того, метод. populate также не работает с возвращенным документом. Как правильно заполнить вновь созданный документ? Вот мой код:

Favorite.create({ user: req.user._id, dishes: req.params.dishId })
                    .then((favorite) => {
                        favorite.populate('user');
                        favorite.populate('dishes');
                        console.log('Favorite marked', favorite);
                        res.statusCode = 200;
                        res.setHeader('Content-Type', 'application/json');
                        res.json(favorite);
                    }, (err) => next(err))
            }
        })
        .catch((err) => next(err));

1 Ответ

1 голос
/ 29 января 2020

Вы можете использовать метод populate после методов Model.find.

Созданный фаворит будет иметь значение _id, поэтому вы можете найти фаворита по _id, а затем заполнить пользователя и блюда следующим образом:

Favorite.findById(favorite._id)
          .populate("user")
          .populate("dishes")

Весь код:

  Favorite.create({ user: req.user._id, dishes: req.params.dishId })
    .then(
      favorite => {
        console.log("Favorite marked", favorite);
        const result = Favorite.findById(favorite._id)
          .populate("user")
          .populate("dishes");

        res.statusCode = 200;
        res.setHeader("Content-Type", "application/json");
        res.json(result);
      },
      err => next(err)
    )
    .catch(err => next(err));
...