Estou usando "mongoose": "^5.7.1"
no meu projeto Node.js. Estou fazendo uma API que envolve a atualização em dois documentos. Então, eu estou usando as transações da seguinte forma:
// Start the transaction
session = await mongoose.startSession()
session.startTransaction()
await Promise.all([
<1st update operation>,
<2nd update operation>
])
// Commit the transaction
session.commitTransaction()
Quando acerto essa API no meu ambiente local, recebo o seguinte erro:
MongoError: esta implantação do MongoDB não suporta gravações repetíveis. Por favor, adicione retryWrites = false à sua cadeia de conexão.
Quando eu bati nesta API em ambiente remoto, ela funciona bem. Estou usando https://www.clever-cloud.com como nuvem de banco de dados e AWS como nuvem de API.
Conforme escrito na mensagem de erro, tentei colocar retryWrites=false
- no final da cadeia de conexão que estou passando para o mangusto como
mongodb://${ip}:${port}/${this.MONGO_DATABASE}?retryWrites=false
- com as opções
retryWrites: false
passadas para omongoose.connect
método
mongoose.connect(`mongodb://${ip}:${port}/${this.MONGO_DATABASE}`, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
retryWrites: false
}, (err) => {...})
Nenhuma das opções acima resolveu o problema.
Abaixo está a saída do mongo --version
comando:
db version v4.0.13
git version: bda366f0b0e432ca143bc41da54d8732bd8d03c0
allocator: system
modules: none
build environment:
distarch: x86_64
target_arch: x86_64
Eu depurei e encontrei o erro real por trás do lançamento desse erro é:
MongoError: os números de transação são permitidos apenas em um membro ou mongos do conjunto de réplicas
Por favor, sugira algo.