Używam "mongoose": "^5.7.1"
w moim projekcie Node.js. Tworzę interfejs API, który wymaga aktualizacji w dwóch dokumentach. Tak więc korzystam z transakcji, takich jak:
// Start the transaction
session = await mongoose.startSession()
session.startTransaction()
await Promise.all([
<1st update operation>,
<2nd update operation>
])
// Commit the transaction
session.commitTransaction()
Po naciśnięciu tego interfejsu API w lokalnym środowisku pojawia się następujący błąd:
MongoError: To wdrożenie MongoDB nie obsługuje zapisów z możliwością ponownej próby. Dodaj retryWrites = false do ciągu połączenia.
Gdy uderzę w ten interfejs w zdalnym środowisku, działa dobrze. Używam https://www.clever-cloud.com jako chmury bazy danych i AWS jako chmury api.
Jak napisano w komunikacie o błędzie, próbowałem umieścić retryWrites=false
- na końcu ciągu połączenia, który przekazuję do mangusty jako
mongodb://${ip}:${port}/${this.MONGO_DATABASE}?retryWrites=false
- z opcjami
retryWrites: false
przekazanymi domongoose.connect
metody.
mongoose.connect(`mongodb://${ip}:${port}/${this.MONGO_DATABASE}`, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
retryWrites: false
}, (err) => {...})
Żadne z powyższych nie rozwiązało problemu.
Poniżej znajduje się wynik mongo --version
polecenia:
db version v4.0.13
git version: bda366f0b0e432ca143bc41da54d8732bd8d03c0
allocator: system
modules: none
build environment:
distarch: x86_64
target_arch: x86_64
Mam debugowanie i znajduję rzeczywisty błąd powodujący zgłoszenie tego błędu:
MongoError: Numery transakcji są dozwolone tylko w przypadku elementu zestawu repliki lub mongo
Proszę zasugerować coś.