박현근
박현근

Reputation: 63

MongoDB retryWrites setup code is not working

Now, I am trying to develop the transaction session for MongoDB.

The transaction code

        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();
        }

When I called this code, that gave me the below error message.

MongoError: This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string.

So, I add retryWrites=false code in the mongoose connection code. AS IS

const mongoose = require('mongoose');
mongoose.connect(process.env.MONGO_URI, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  poolSize: 10,
});

TO BE

const mongoose = require('mongoose');
mongoose.connect(process.env.MONGO_URI, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  retryWrites: false,
  poolSize: 10,
});

But I still have the same problem... I am not sure what is the problem. Please MongoDB expert let me know the solution.

Upvotes: 0

Views: 1449

Answers (1)

D. SM
D. SM

Reputation: 14520

See Requirements for using MongoDB transactions for transaction requirements. You are probably using a standalone deployment.

Upvotes: 0

Related Questions