Tôi đang sử dụng "mongoose": "^5.7.1"
trong dự án Node.js của mình. Tôi đang thực hiện một api liên quan đến việc cập nhật trong hai tài liệu. Vì vậy, tôi đang sử dụng các giao dịch như sau:
// Start the transaction
session = await mongoose.startSession()
session.startTransaction()
await Promise.all([
<1st update operation>,
<2nd update operation>
])
// Commit the transaction
session.commitTransaction()
Khi tôi nhấn api này trên môi trường cục bộ của mình, tôi gặp lỗi sau:
MongoError: Việc triển khai MongoDB này không hỗ trợ ghi lại. Vui lòng thêm retryWrites = false vào chuỗi kết nối của bạn.
Khi tôi nhấn api này trên môi trường từ xa, thì nó chạy tốt. Tôi đang sử dụng https://www.clever-cloud.com làm đám mây cơ sở dữ liệu và AWS làm đám mây api.
Như đã viết trong thông báo lỗi, tôi đã cố gắng đặt retryWrites=false
- ở cuối chuỗi kết nối mà tôi chuyển đến cầy mangut
mongodb://${ip}:${port}/${this.MONGO_DATABASE}?retryWrites=false
- với các tùy chọn như
retryWrites: false
được truyền chomongoose.connect
phương thức.
mongoose.connect(`mongodb://${ip}:${port}/${this.MONGO_DATABASE}`, {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
retryWrites: false
}, (err) => {...})
Không có điều nào ở trên giải quyết được vấn đề.
Dưới đây là đầu ra của mongo --version
lệnh:
db version v4.0.13
git version: bda366f0b0e432ca143bc41da54d8732bd8d03c0
allocator: system
modules: none
build environment:
distarch: x86_64
target_arch: x86_64
Tôi đã gỡ lỗi và tìm thấy lỗi thực sự đằng sau việc ném lỗi này là:
MongoError: Số giao dịch chỉ được phép trên một thành viên bản sao hoặc mongos
Xin đề nghị một cái gì đó.