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. У нескольких исполнителей может быть несколько альбомов, и наоборот.
Это правильный способ реализовать это, или было бы лучше реорганизовать это?