我在一个函数中有两个数据库Mutations .我可以想象第一个Mutations 成功,第二个Mutations 失败的情景.第一个改变了一些东西,第二个失败了.我能以某种方式取消第一个Mutations 吗?
export const postReset = async (req, res, next) => {
const cardId = req.body.cardId;
const userId = req.user?.id;
if (!cardId || !userId) {
return res.status(404).json({
success: false,
});
}
try {
// First mutation
const cardRemoved = await UsersModel.updateOne(
{ _id: userId },
{ $pull: { cards: { cardId: cardId } } },
{ safe: true, multi: true }
);
if (!cardRemoved) {
return res.status(404).json({
success: false,
});
}
} catch (error) {
return res.status(404).json({
success: false,
});
}
try {
// Second mutation
const cardRemovedFromCardsColelction = await CardsModel.findOneAndDelete({
cardId: cardId,
cardOwner: userId,
});
if (!cardRemovedFromCardsColelction) {
return res.status(404).json({
success: false,
});
}
return res.status(201).json({
success: true,
});
} catch (error) {
return res.status(404).json({
success: false,
});
}
};