【问题标题】:MongoDB retryWrites setup code is not workingMongoDB retryWrites 设置代码不起作用
【发布时间】: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 专家告诉我解决方案。

【问题讨论】:

标签: node.js mongodb mongoose


【解决方案1】:

有关交易要求,请参阅Requirements for using MongoDB transactions。您可能正在使用独立部署。

【讨论】:

    猜你喜欢
    • 2018-05-22
    • 2011-07-19
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 2019-05-30
    • 2019-08-19
    • 2018-11-27
    • 1970-01-01
    相关资源
    最近更新 更多