猫鼬异步/等待查找然后编辑并保存?
问题描述:
是否可以做一个查找然后保存使用异步/等待承诺?猫鼬异步/等待查找然后编辑并保存?
我有以下代码:
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
答
这就是我一直在寻找:
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);
}
'accounts'是找到的文档的数组,因此您的代码实际上不会编辑任何内容。你想在这里做什么? – JohnnyHK
@JohnnyHK我想我只是在试着了解猫鼬,查询和承诺(以await/sync格式)。我想上面的代码没有意义。如果我想使用用户名“hello @ hello.com”查找所有帐户并将密码更改为“asdf”,该怎么办?我会改变上面的代码来反映这个问题。 –
这仍然没有任何意义,因为'accounts'仍然是一个数组。通过使用'findOne'而不是'find'开始,它会更有意义。 – JohnnyHK