无法使用 Mongoose 更新 MongoDB 中的数据

Can't Update Data in MongoDB using Mongoose

这些是我的模式

 const dataSchema = new mongoose.Schema({
  email:String,
  date:String,
  amount:Number
})
const userSchema = new mongoose.Schema({
  email: String,
  password: String,
  data:[{
      type: mongoose.Schema.Types.ObjectId,
      ref: "UserData",
   }],
})

const User = new mongoose.model("User", userSchema);
const UserData = new mongoose.model("UserData", dataSchema);

我希望在用户 post 时更新数据。如果特定日期的用户数据已经存在,我希望通过添加以前的数量和新数量来更新它

app.post("/insert",(req,res)=>{
  const username = req.cookies.username;
  const Date = now.toLocaleDateString("en-Uk");
  const Amount = req.body.value;


  function createNewData(){
    const userData = new UserData({
      email:username,
      date:Date,
      amount: Amount
    });
  
    userData.save((err)=>{
      if(err){
        console.log(err);
      }else{
        console.log('newdatasaved');
        res.redirect("/")
      }
    });
    User.findOneAndUpdate({email:username},{$push:{data:userData._id}},(err)=>{
      if(err){
        console.log('cant push');
      }else{
        console.log('pushed data');
      }
    });
  }

  UserData.findOne({email:username,date:Date},(err,found)=>{
    if(err){
      createNewData();
      console.log('cant find on particular date new created');

    }else{
      if(found){
        let a = Number(found.amount);
        let b = Number(Amount)+a;
        UserData.findOneAndUpdate({email:username,date:Date},{$set:{amount:b}});
        console.log('updated in existing');
        res.redirect("/");
      }

    }
    
  })
 
})

但数据库中的数据似乎始终为零

看金额部分还是零。 谁能告诉我我做错了什么。我使用了 set 方法,但无法 posted 新数据。

你检查过amount的值了吗?检查控制台中的金额值。

您必须向更新函数添加回调。

UserData.findOneAndUpdate(
  {email:username,date:Date},
  {$set:{amount:b}},
  function (error, success){}
)

如果你不想使用回调,那么你必须使用.exec()

UserData.findOneAndUpdate(
  {email:username,date:Date},
  {$set:{amount:b}},
).exec()