Saya menggunakan "mongoose": "^5.7.1"
dalam proyek Node.js saya. Saya membuat api yang melibatkan pembaruan dalam dua dokumen. Jadi, saya menggunakan transaksi seperti berikut:
// Start the transaction
session = await mongoose.startSession()
session.startTransaction()
await Promise.all([
<1st update operation>,
<2nd update operation>
])
// Commit the transaction
session.commitTransaction()
Ketika saya menyalakan api ini di lingkungan lokal saya, saya mendapatkan kesalahan berikut:
MongoError: Ini penyebaran MongoDB tidak mendukung menulis retryable. Silakan tambahkan retryWrites = false ke string koneksi Anda.
Ketika saya menyalakan api ini di lingkungan yang jauh, maka itu berjalan dengan baik. Saya menggunakan https://www.clever-cloud.com sebagai database cloud dan AWS sebagai api cloud.
Seperti yang tertulis dalam pesan kesalahan, saya telah mencoba untuk menempatkan retryWrites=false
- pada akhir string koneksi yang saya lewati untuk luoose
mongodb://${ip}:${port}/${this.MONGO_DATABASE}?retryWrites=false
- dengan opsi yang
retryWrites: false
diteruskan kemongoose.connect
metode.
mongoose.connect(`mongodb://${ip}:${port}/${this.MONGO_DATABASE}`, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
retryWrites: false
}, (err) => {...})
Tidak satu pun di atas yang menyelesaikan masalah.
Di bawah ini adalah output dari mongo --version
perintah:
db version v4.0.13
git version: bda366f0b0e432ca143bc41da54d8732bd8d03c0
allocator: system
modules: none
build environment:
distarch: x86_64
target_arch: x86_64
Saya telah men-debug dan menemukan kesalahan aktual di balik melempar kesalahan ini adalah:
MongoError: Nomor transaksi hanya diperbolehkan pada set anggota replika atau mongo
Tolong sarankan sesuatu.