小编Ayu*_*ani的帖子

Mongodb 事务 - 无法从快照读取

我正在尝试使用 mongoose 进行 MongoDB 事务,但在每次创建数据库并插入用户和公司的请求时,我都会收到以下错误

“由于待处理的集合目录更改,无法读取快照;请重试该操作。快照时间戳为 Timestamp(1584451745, 1)。集合最小值为 Timestamp(1584451753, 1)”

重试请求后,它起作用了。但是,当我发送新请求来创建新数据库并插入用户和公司时,我收到相同的错误。我总是需要重试请求才能成功插入数据。

const session = await mongoose.startSession();
session.startTransaction();

try {
  await db.createCollection("users");
  await db.createCollection("companies");

  const savedUser = await UserModel({
    ...userDetails,
  }).save({ session });


  const company = await new CompanyModel({
    ...companyDetails
  }).save({ session });


  await session.commitTransaction();

  return { message: "User Added Successfully" };

} catch (err) {
  error("Transaction Error", err);
  await session.abortTransaction();
  throw err;
} finally {
  session.endSession();
}
Run Code Online (Sandbox Code Playgroud)

知道我在这里缺少什么吗?

transactions mongoose mongodb node.js

5
推荐指数
1
解决办法
3215
查看次数

标签 统计

mongodb ×1

mongoose ×1

node.js ×1

transactions ×1