小编Exo*_*mus的帖子

如何防止“给定的交易号 1 与任何正在进行的交易不匹配”与猫鼬交易?

我正在使用 Mongoose 访问我的数据库。我需要使用事务来进行原子插入更新。我的交易在 95% 的情况下工作正常,但在 5% 的情况下显示错误:

“给定的交易号 1 不匹配任何正在进行的交易”

重现此错误非常困难,因此我真的很想了解它的来源以摆脱它。我找不到关于这种行为的非常清楚的解释。

我曾尝试在各种功能上使用 async/await 关键字。不知道是手术不及时还是太早了。

这里是我使用的代码:

export const createMany = async function (req, res, next) {
  if (!isIterable(req.body)) {
    res.status(400).send('Wrong format of body')
    return
  }
  if (req.body.length === 0) {
    res.status(400).send('The body is well formed (an array) but empty')
    return
  }

  const session = await mongoose.startSession()
  session.startTransaction()
  try {
    const packageBundle = await Package.create(req.body, { session })
    const options = []
    for (const key in packageBundle) {
      if (Object.prototype.hasOwnProperty.call(packageBundle, key)) { …
Run Code Online (Sandbox Code Playgroud)

transactions backend mongoose mongodb node.js

8
推荐指数
1
解决办法
2192
查看次数

标签 统计

backend ×1

mongodb ×1

mongoose ×1

node.js ×1

transactions ×1