Estoy usando "mongoose": "^5.7.1"
en mi proyecto Node.js. Estoy haciendo una API que implica la actualización en dos documentos. Entonces, estoy usando las transacciones como las siguientes:
// Start the transaction
session = await mongoose.startSession()
session.startTransaction()
await Promise.all([
<1st update operation>,
<2nd update operation>
])
// Commit the transaction
session.commitTransaction()
Cuando llego a esta API en mi entorno local, aparece el siguiente error:
MongoError: esta implementación de MongoDB no admite escrituras recuperables. Agregue retryWrites = false a su cadena de conexión.
Cuando presiono esta API en un entorno remoto, entonces funciona bien. Estoy usando https://www.clever-cloud.com como nube de base de datos y AWS como nube de API.
Como está escrito en el mensaje de error, he intentado poner retryWrites=false
- al final de la cadena de conexión que estoy pasando a mangosta como
mongodb://${ip}:${port}/${this.MONGO_DATABASE}?retryWrites=false
- con opciones
retryWrites: false
pasadas almongoose.connect
método.
mongoose.connect(`mongodb://${ip}:${port}/${this.MONGO_DATABASE}`, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
retryWrites: false
}, (err) => {...})
Ninguno de los anteriores resolvió el problema.
A continuación se muestra la salida del mongo --version
comando:
db version v4.0.13
git version: bda366f0b0e432ca143bc41da54d8732bd8d03c0
allocator: system
modules: none
build environment:
distarch: x86_64
target_arch: x86_64
He depurado y encuentro que el error real detrás de lanzar este error es:
MongoError: los números de transacción solo se permiten en un miembro de conjunto de réplica o mongos
Por favor sugiera algo.