【发布时间】:2021-03-18 21:52:08
【问题描述】:
现在,我正在尝试为 MongoDB 开发事务会话。
- MongoDB 版本:4.4.2
- 猫鼬版本:5.11.4
交易代码
const session = await mongoose.startSession();
session.startTransaction();
try {
const result = await storage.create([attachment], { session: session });
await req.files.newFile.mv(attachment.filePath);
await session.commitTransaction();
return res.send(result);
} catch (err) {
console.log(err);
await session.abortTransaction();
return res.status(500).send(err);
} finally {
session.endSession();
}
当我调用此代码时,它给了我以下错误消息。
MongoError:此 MongoDB 部署不支持可重试写入。请将 retryWrites=false 添加到您的连接字符串中。
所以,我在 mongoose 连接代码中添加了 retryWrites=false 代码。 原样
const mongoose = require('mongoose');
mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
poolSize: 10,
});
成为
const mongoose = require('mongoose');
mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
retryWrites: false,
poolSize: 10,
});
但我仍然有同样的问题...... 我不确定是什么问题。 请 MongoDB 专家告诉我解决方案。
【问题讨论】:
-
这能回答你的问题吗? Using mongo transactions