node.js - 如何使用nodejs,express和mongoose在一个函数中保持两个操作的一致性
问题描述
最近,我用express和mongoose编写了一个nodejs应用程序。
当我在一个函数中更新两个集合时,问题就出现了。
代码段如下所示。
exports.doVote = async (req, res) => {
// some codes...
// Operation 1
const voteNumInfo = await VoteNumInfo.findOneAndUpdate({ activityId, vodId },
{ vodId, vodName, activityId, categoryId, categoryName, $inc: { voteNum: 1, showNum: 1 } },
{ new: true, upsert: true, setDefaultsOnInsert: true });
// Operation 2
await VoteInfo.create({ vodId, vodName, activityId, categoryId, voteDate, stbId, ptag });
// some codes...
}
其中VoteNumInfo
是投票统计VoteInfo
模型, 是投票记录模型。
当操作 2 出错时,操作 1 无法回滚。
有什么解决办法吗?类似于@transaction
Spring Framework 中的东西?
请帮我。