Sto usando "mongoose": "^5.7.1"
nel mio progetto Node.js. Sto realizzando un'API che prevede l'aggiornamento in due documenti. Quindi, sto usando le transazioni come segue:
// Start the transaction
session = await mongoose.startSession()
session.startTransaction()
await Promise.all([
<1st update operation>,
<2nd update operation>
])
// Commit the transaction
session.commitTransaction()
Quando colpisco questa API sul mio ambiente locale, ottengo il seguente errore:
MongoError: questa distribuzione MongoDB non supporta le scritture ripetibili. Aggiungi retryWrites = false alla stringa di connessione.
Quando colpisco questa API su un ambiente remoto, funziona alla perfezione. Sto usando https://www.clever-cloud.com come cloud del database e AWS come api cloud.
Come scritto nel messaggio di errore, ho provato a mettere retryWrites=false
- alla fine della stringa di connessione che sto passando a mangusta come
mongodb://${ip}:${port}/${this.MONGO_DATABASE}?retryWrites=false
- con opzioni
retryWrites: false
passate almongoose.connect
metodo
mongoose.connect(`mongodb://${ip}:${port}/${this.MONGO_DATABASE}`, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
retryWrites: false
}, (err) => {...})
Nessuno dei precedenti ha risolto il problema.
Di seguito è riportato l'output 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
Ho il debug e trovo l'errore reale dietro a lanciare questo errore è:
MongoError: i numeri di transazione sono consentiti solo su un membro del set di repliche o sui monghi
Per favore, suggerisci qualcosa.