Я використовую "mongoose": "^5.7.1"
у своєму проекті Node.js. Я роблю api, що передбачає оновлення двох документів. Отже, я використовую такі операції, як:
// Start the transaction
session = await mongoose.startSession()
session.startTransaction()
await Promise.all([
<1st update operation>,
<2nd update operation>
])
// Commit the transaction
session.commitTransaction()
Коли я потрапляю на цю api в моєму локальному середовищі, я отримую таку помилку:
MongoError: Це розгортання MongoDB не підтримує записи, які можна повторно записувати. Будь ласка, додайте retryWrites = false до рядка підключення.
Коли я потрапив на цю api на віддалене середовище, тоді він працює нормально. Я використовую https://www.clever-cloud.com як хмару бази даних, а AWS - як хмару api.
Як написано в повідомленні про помилку, я намагався поставити retryWrites=false
- в кінці рядка з'єднання, який я передаю мангусту як
mongodb://${ip}:${port}/${this.MONGO_DATABASE}?retryWrites=false
- з опціями,
retryWrites: false
переданимиmongoose.connect
методу.
mongoose.connect(`mongodb://${ip}:${port}/${this.MONGO_DATABASE}`, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
retryWrites: false
}, (err) => {...})
Жодне із зазначеного не вирішило це питання.
Нижче наведено вихід mongo --version
команди:
db version v4.0.13
git version: bda366f0b0e432ca143bc41da54d8732bd8d03c0
allocator: system
modules: none
build environment:
distarch: x86_64
target_arch: x86_64
У мене є налагодження і я знаходжу фактичну помилку за викид цієї помилки:
MongoError: Номери транзакцій дозволяються лише на члені групи реплік або mongos
Будь ласка, підкажіть щось.