gpt4 book ai didi

node.js - 更改 mongoose 文档中的数据

转载 作者:太空宇宙 更新时间:2023-11-04 03:11:22 25 4
gpt4 key购买 nike

我是 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');
}
})

它返回结果查询数据,但是当我添加代码来更新 bool 值“banned”时,出现错误。我做错了什么?

最佳答案

我假设 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');
});
}
})

这会在数据库中查询与用户名和代码匹配的单个文档。如果 userDoc 为 null,则 res.json('nope') 将会发生。

然后,代码将 userDocbanned 属性设置为 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');
}
})

关于node.js - 更改 mongoose 文档中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17462585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com