簡體   English   中英

如何在 mongoose 中增加屬性值(整數)和更新?

[英]How to increment property's value(integer) and update with some restrictions in mongoose?

我有一個 studentSchema,其中有默認值為 0 的 pass 屬性。所以我想在用戶創建新 pass 時將該值增加 1。

 pass: {
  type: Number,
  default: 0,
},

如果我對您的理解正確,您可以通過這種方式使用 mongoose預掛鈎

假設您以這種方式(或類似方式)更新:

model.update({_id:value},{$set:{yourPasswordField:"newName"}})

那么你需要:

  • 首先獲取值$set.yourPasswordField是否存在,這意味着您已經更新了該查詢中的問題。
  • 然后,如果存在,則使用相同的過濾器更新文檔
  • 最后更新所需的字段。
MongooseModel.pre('update', async function () {
  // get the fields which have been updated.
  const passUpdated = this.getUpdate().$set.yourPasswordField;
  if(passUpdated){
    // Find the object using the filter in your query (i,e: {_id:value} )
    const docToUpdate = await this.model.findOne(this.getFilter());
    // Then update the value into 1 and save into DB
    docToUpdate.pass = docToUpdate.pass + 1;
    docToUpdate.save()
  }
});

暫無
暫無

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

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