Mongoose findOneAndUpdate 在使用 aws Documentdb 时抛出“不支持可重试写入”错误

问题描述

我的架构如下:

var answerSchema = new mongoose.Schema({
  username: {
    type: String,unique: true,required: true
  }
)
mongoose.model("Answer",answerSchema)

在另一个文件中:

var Answer = mongoose.model("Answer")
router.put("/test",function (req,res){
  const query = { _id: "5fe656077ddb2a4e1a91d808"}
  const update = { username: 'test' }
  const options = {
    new: true,upsert: true,setDefaultsOnInsert: true
  }
  
  Answer.findOneAndUpdate(query,update,options,function(error,doc) {
      if(error){
        res.send(error.message)
      }
      else{
        res.send('successfully saved.')
      }
    })
})

目前在 mongo shell 中,我可以运行 db.answers.find().pretty() 并且它给了我:

{
        "_id" : ObjectId("5fe656077ddb2a4e1a91d808"),"username" : "aaaa","__v" : 0
}

但是,当我使用 POSTMAN 访问“/test” URL 时,出现错误不支持可重试写入”。我知道 documentdb 不支持可重试写入,但是 FindOneAndUpdate 如何需要可重试写入?我还尝试将 set() 和 save() 与 findOne() 一起使用,findOne() 工作正常,但 set() 抛出相同的错误。我在这里错过了什么吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)