[英]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')
。
然后,代碼將userDoc
的banned
屬性設置為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.