猫鼬异步/等待查找然后编辑并保存?

问题描述:

是否可以做一个查找然后保存使用异步/等待承诺?猫鼬异步/等待查找然后编辑并保存?

我有以下代码:

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

这就是我一直在寻找:

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); 
}