簡體   English   中英

更改貓鼬文檔中的數據

[英]Changing data in mongoose document

我是mongoose mongodb的新手,並且正在嘗試更新存儲的數據。 我已經在以下api中嘗試了該示例: http : //mongoosejs.com/docs/api.html#model_Model.findOneAndUpdate,但似乎做得不好。 它說要查詢數據並更新它,我可以這樣做:

Model.findOne({ name: 'borne' }, function (err, doc) 
{
  if (err) ..
  doc.name = 'jason borne';
  doc.save(callback);
});

我正在這樣做:

user.find({ 'username': Username, 'code': Key}, function(err, check){
    var callback5;
    if((String(check)) === "")
    {
        res.json('nope');
    }
    else
    {
        banned: true;
        user.save(callback5);
        res.json('yep');
    }
})

它返回結果查詢數據,但是當我添加代碼以更新布爾“ banned”的值時,出現錯誤。 我究竟做錯了什么?

我假設user變量是Model對象,並且您要實現的目標是找到一個具有給定用戶名和代碼的單個用戶,並將該用戶的banned屬性設置為true。

第一件事是user.find將返回一個用戶數組,而不僅僅是一個用戶,因此您將要使用user.findOne

user.findOne({ username: Username, code: Key}, function(err, userDoc) {
    if (err)
    {
        // TODO: Handle the error!
    }
    if (! userDoc)
    {
        res.json('nope');
    }
    else
    {
        userDoc.banned = true;
        userDoc.save(function (err) {
            if (err)
            {
                // TODO: Handle the error!
            }
            res.json('yep');
        });
    }
})

這將在數​​據庫中查詢與用戶名和代碼匹配的單個文檔。 如果userDoc為null,則將發生res.json('nope')

然后,代碼將userDocbanned屬性設置為true,然后將文檔保存回數據庫。 因為save函數是異步的,所以您想將res.json('yep')代碼放入回調中,否則您將不知道它是否實際發生。

我沒有放入任何實際的錯誤處理代碼,我留給您做,但是在使用標准回調模式時,您應該始終處理任何潛在的錯誤。


您還可以使用findOneAndUpdate實現此findOneAndUpdate

var conditions = { username: Username, code: Key };
var update = { banned: true };
user.findOneAndUpdate(conditions, update, function (err)
{
  if (err)
  {
      res.json('nope');
  }
  else
  {
      res.json('yep');
  }
})

暫無
暫無

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

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