Как выполнить два запроса Mon goose в одной функции Typescript asyn c? - PullRequest
0 голосов
/ 08 апреля 2020
public addAlbum = async (req: Request, res: Response): Promise<any> => {
try {
  //First we add the album to the artist
  const artistUpdated = await Artist.findByIdAndUpdate(
    req.params.id,
    {
      $push: {
        albums: req.params.albumId,
      },
    },
    { new: true }
  );
  if (!artistUpdated) {
    return res.status(404).send({
      success: false,
      message: "Artist not found",
      data: null,
    });
  }
  //Then we add the artist to the album
  const albumUpdated = await Album.findByIdAndUpdate(
    req.params.albumId,
    {
      $push: {
        artists: req.params.id,
      },
    },
    { new: true }
  );
  if (!albumUpdated) {
    return res.status(404).send({
      success: false,
      message: "Album not found",
      data: null,
    });
  }
  res.status(200).send({
    success: true,
    data: artistUpdated,
  });
} catch (err) {
  res.status(500).send({
    success: false,
    message: err.toString(),
    data: null,
  });
}

};

В приведенном выше коде я пытаюсь выполнить два запроса mon goose в моей функции Typescript asyn c.

Эта конкретная функция добавляет ссылка на существующий Альбом для существующего Исполнителя в MongoDb.

Сначала мне нужно обновить документ Исполнителя, а затем мне нужно обновить документ Альбома. Это потому, что я поддерживаю отношения «многие ко многим» в MongoDb. У нескольких исполнителей может быть несколько альбомов, и наоборот.

Это правильный способ реализовать это, или было бы лучше реорганизовать это?

...