2015-11-14 143 views
0

使用MEAN堆棧,我試圖讓管理員帳戶更新另一個用戶的信息,在這種情況下,他們的標題/角色在網站上。我遇到的問題是編輯用戶時唯一可用的功能是save()函數。這可能是我可以利用更新功能,如果是這樣的話,請讓我知道,但它看起來並不可能:MongoDB - 保存與更新文檔中的特定字段

enter image description here

出現的問題是,當用戶保存,它創建一個新文檔,並將用戶的密碼和salt覆蓋到某個值。我希望能夠調用「更新」功能,只會更新一個領域,但我不知道如何。有沒有辦法做到這一點與保存功能?

相關代碼:

exports.updateUserRoles = function(req, res) { 
    var currUser = req.body; 
    User.findById(currUser._id, function(err, user) { 
    //user.roles = currUser.roles; 
    user.save({ _id : '56467b28ba57d8d890242cfa', roles : 'admin' }); 

    //THE BELOW WAS A PREVIOUS ATTEMPT 

    /*user.save(function(err) { 
     if (err) { 
      return res.status(400).send({ 
       message: errorHandler.getErrorMessage(err) 
      }); 
     } else { 
      res.jsonp(user); 
      console.log('test2'); 
     } 
    });*/ 
}); 
}; 

嘗試別的東西,似乎很接近,但仍然還沒有應用。

這裏是我運行的是什麼:

exports.updateUserRoles = function(req, res) { 
    var currUser = req.body; 
    User.findById(currUser._id, function(err, user) { 
     //user.roles = currUser.roles; 
     //user.roles.set(0, 'admin'); 
     console.log('test'); 
     user.update(
      { _id: '56467b28ba57d8d890242cfa' }, 
      { 
       $set: { 
       roles: 'admin', 
       }, 
      } 
     ); 
     console.log('test2'); 
    }); 
}; 

在命中user.update線,我們在局部變量的用戶,看到:

enter image description here

user.update去進入這個Document.prototype.update函數,看到:

enter image description here

的ARGS看起來要建設權,這_id我們的目標是,什麼動作,看出:

enter image description here

但隨後運行後,似乎沒有任何改變。我非常難過。

回答

0

對於更新MongoDB中,您可以使用更新不同的原子的運營商,比如$集各個領域,$取消設置,$推等 例如:

var updateUserRoles = function(db, callback) { 
    db.collection('users').updateOne(
     { "_id", : "user_id", }, 
     { $set: { "password": "new_password" } }, 
     function(err, results) { 
     console.log(results); 
     callback(); 
     } 
    ); 
}; 
相關問題