2017-05-31 60 views
4

是否可以做一個查找然後保存使用異步/等待承諾?貓鼬異步/等待查找然後編輯並保存?

我有以下代碼:

try { 
    var accounts = await Account.find() 
    .where("username").in(["[email protected]"]) 
    .exec(); 
    accounts.password = 'asdf'; 
    accounts.save(); 
} catch (error) { 
    handleError(res, error.message); 
} 

,我收到以下錯誤:

ERROR: accounts.save is not a function 
+2

'accounts'是找到的文檔的數組,因此您的代碼實際上不會編輯任何內容。你想在這裏做什麼? – JohnnyHK

+0

@JohnnyHK我想我只是在試着瞭解貓鼬,查詢和承諾(以await/sync格式)。我想上面的代碼沒有意義。如果我想使用用戶名「hello @ hello.com」查找所有帳戶並將密碼更改爲「asdf」,該怎麼辦?我會改變上面的代碼來反映這個問題。 –

+1

這仍然沒有任何意義,因爲'accounts'仍然是一個數組。通過使用'findOne'而不是'find'開始,它會更有意義。 – JohnnyHK

回答

4

這就是我一直在尋找:

try { 
    var accounts = await Account.findOneAndUpdate(
     {"username" : "[email protected]"}, 
     {$set: {"password" : "aaaa"}}, 
     {new : true} 
    ); 
    res.status(200).json(accounts); 
} catch (error) { 
    handleError(res, error.message); 
} 

或(感謝@JohnnyHK找到vs找到一個提示!):

try { 
    var accounts = await Account.findOne() 
    .where("username").in(["[email protected]"]) 
    .exec(); 
    accounts.password = 'asdf'; 
    accounts.save(); 
    res.status(200).json(accounts); 
} catch (error) { 
    handleError(res, error.message); 
}