簡體   English   中英

如何在 Mongoose 中使用 findOneAndUpdate() 並保持值不變?

[英]How can I use findOneAndUpdate() in Mongoose, and keep a value the same?

我正在制作一個系統,如果 x 為真,它將增加 value1,但如果 y 為真,它將增加 value2。 使用我現在擁有的系統,它還會將未更新的值重置回 0,我不知道該怎么做才能阻止它。 我只需要其他值相同

這是我的代碼。

leaderboard.findOneAndUpdate(
{ 
    userID: interaction.user.id 
}, 
{
    userID: interaction.user.id,
    $inc: { accepts: 1 },
    denies: 0
}, 
{ 
    upsert: true, new: true 
},  (err: any, doc: any) => {

if (err) console.log(err)

console.log(`Updated ${interaction.user.username}'s accepts to ${doc.accepts} `)
})

所以在這個例子中,我需要接受增加 1,但拒絕保持 MongoDB 中已有的不變。

嘗試將您的更新查詢更改為此

{ $inc: { accepts: 1 } }

不確定upsert在那種情況下是否有意義。 因為它會創建一個只有accepts字段的新文檔。

{ upsert: true, new: true }

如果需要更新upsert ,則根據要設置的值構建更新查詢。 例如

If (x) {
  updateQuery = {
    userID: interaction.user.id,
    $inc: { accepts: 1 },
  }
} else {
  updateQuery = {
    userID: interaction.user.id,
    $inc: { denies: 1 },
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM