ฉันใช้"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 cloud
ดังที่เขียนไว้ในข้อความแสดงข้อผิดพลาดฉันพยายามใส่ 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: อนุญาตให้ใช้หมายเลขธุรกรรมบนสมาชิกชุดแบบจำลองหรือ Mongo เท่านั้น
กรุณาแนะนำบางอย่าง