Use*_*920 1 database mongoose mongodb nosql node.js
我是 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);
});
Run Code Online (Sandbox Code Playgroud)
我正在这样做:
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');
}
})
Run Code Online (Sandbox Code Playgroud)
它返回结果查询数据,但是当我添加代码以更新布尔值“banned”的值时,出现错误。我究竟做错了什么?
小智 5
我假设该user变量是一个 Model 对象,并且您要实现的是找到具有给定用户名和代码的单个用户,并将该用户的禁止属性设置为 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');
});
}
})
Run Code Online (Sandbox Code Playgroud)
这会在数据库中查询与用户名和代码匹配的单个文档。如果userDoc为空,res.json('nope')则将发生。
然后代码将 的banned属性设置userDoc为 true,然后将文档保存回数据库。因为save函数是异步的,所以你要把res.json('yep')代码放在回调中,否则你不知道它是否真的发生了。
我没有放入任何实际的错误处理代码,我把它留给你去做,但是在使用标准回调模式时你应该总是处理任何潜在的错误。
你也可以使用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');
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8300 次 |
| 最近记录: |