node.js - MongoDB retryWrites 设置代码不起作用
问题描述
现在,我正在尝试为 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 专家告诉我解决方案。
解决方案
有关事务要求,请参阅使用 MongoDB 事务的要求。您可能正在使用独立部署。
推荐阅读
- javascript - 如何在Javascript中拆分并获取数组中的键值对对象
- node.js - TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是 React Native 中的字符串类型
- security - 网址被 Mcafree 标记为恶意站点
- python - 如何使用烧瓶框架在 python 中编写 switch 语句?
- javascript - 将值传递给反应中 useEffect 中的 fetch 调用
- spring-boot - 在多对多中间表spring boot中保存数据的问题
- linux - 高分辨率计时器(HRT)的精度能“真的”1ns吗?
- amazon-web-services - AWS Connect:根据属性选择要使用的 AWS Lex 机器人
- dax - 无法识别 DAX Today
- ios - 仅为第一行动态更改 UITableViewCell 的最佳方法