我有一个典型的架构和模型:
var mongoose = require('mongoose');
var userSchema = new mongoose.Schema({
email: String,
password: String,
profile: {
name: String,
surname: String,
photo: String
},
stats: {
lastLogin: { type: Date, default: Date.now },
loginCount: Number,
lastIP: String
},
source: String,
deleted: Boolean,
dateCreated: { type: Date, default: Date.now }
});
mongoose.model('User', userSchema);
当我执行此更新时,它仅在定义回调时才有效,否则仅执行但数据库中的值未更改:
User.update({email:'foo@bar.com'}, {$inc: {'stats.loginCount': 1}});
这有效:
User.update({email:'foo@bar.com'}, {$inc: {'stats.loginCount': 1}}, function() {});
这是一个错误吗?我没有在文档中看到是否需要回调,但是要求这样做很奇怪……我认为我在这里缺少了一些东西。
注意:我通过电子邮件匹配以测试建议,我在NodeJS v0.8.17中使用猫鼬v3.5.4,并具有简单的Express v3.0.6设置。
提前致谢。
update
用猫鼬打电话的正确方法如下:
User.update(query, update).exec(callback);
这样,您将可以跳过callback
:
User.update(query, update).exec();
打电话时
User.update(query, update)
它返回一个查询对象。
在查询数据库时,它非常有用,因为您可以在执行查询对象之前对其进行操作。例如,您可以limit
为find
查询指定一个:
User.find(query).limit(12).exec(callback);
Update
使用相同的机制,尽管在这里没有那么有用。
问题内容: 我已经查看了网站上的一些问题,但还没有弄清楚我在做什么错。我有一些这样的代码: 我不确定在中间应该做什么以使其正确更新数据库。我已经尝试了很多东西,但是无法撤消以找出所有我尝试过的东西。我一整夜都花了时间,我希望它能正常工作。 这几乎是我想要的,我想知道是否有任何方法可以在条件部分 我会继续玩弄它。 问题答案: 这正是我想要的,只有一行。:D完美!
问题内容: 我有一个让我感到困惑的奇怪问题。我有一个模型: 变体条目如下所示: 我需要添加一个新字段-说“颜色”。所以我这样做是为了批量更新: 但是,“颜色”字段未设置-如果我再次浏览并注释掉该行,则它不会显示。我似乎无法弄清楚为什么要这样做。我有一个onSave事件,该事件已正确触发,因此可以保存。我也没有对版本结构进行任何检查- 即没有代码只允许代码和价格。我显然缺少了一些东西,但几个小时后我
问题内容: 我有一个我以前从未见过的问题,猫鼬的findByIdAndUpdate没有在回调中返回正确的模型。 这是代码: 数据库中的原始文档如下所示: 进入的updateObj如下所示: 从回调返回的模型与原始模型相同,而不是updatedObj。如果我查询数据库,它已正确更新。它只是没有从数据库中返回。 这感觉像是一个“愚蠢的用户”错误,但我看不到它。任何想法表示赞赏。 问题答案: 在Mong
问题内容: 如果猫鼬无法连接到数据库,如何设置错误处理的回调? 我知道 但是是否有类似的东西 ? 问题答案: 连接后,您可以在回调中获取错误:
问题内容: 我的文件 夹Folder 具有以下架构: 因此,对于每个页面,我可以拥有许多权限。在CMS中,有一个面板,其中列出了所有文件夹及其权限。管理员可以编辑一个权限并保存。 我可以很容易地用其权限数组保存整个 Folder 文档,其中只修改了一个权限。但是我不想保存所有文档(实际架构中包含更多字段),所以我这样做了: 但是问题是 烫发 总是 不确定的 !我试图以这种方式“静态地”获取许可:
问题内容: 有没有一种方法可以更新对象中的值? 假设我要为id = 2的项更新名称和值项; 我尝试了以下w /猫鼬: 这种方法的问题在于它会更新/设置整个对象,因此在这种情况下,我会丢失id字段。 猫鼬中是否有更好的方法来设置数组中的某些值,但不理会其他值? 我也只查询了这个人: 问题答案: 你近了 您应该在使用update运算符时使用点符号来做到这一点: