node.js - 没有回调的 Mongoose 更新

标签 node.js mongodb express mongoose

我有一个典型的架构和模型:

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 中使用 mongoose v3.5.4 和简单的 Express v3.0.6 设置。

提前致谢。

最佳答案

用mongoose调用update的正确方法如下:

User.update(query, update).exec(callback);

这样你就可以跳过callback:

User.update(query, update).exec();

当你打电话时

User.update(query, update)

它返回 query object .

查询数据库时它非常有用,因为您可以在执行查询对象之前对其进行操作。例如,您可以指定 limit对于您的 find 查询:

User.find(query).limit(12).exec(callback);

Update 使用相同的机制,尽管它在那里用处不大。

关于node.js - 没有回调的 Mongoose 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14613890/

相关文章:

javascript - node.js 获取被拒绝的 Promise 的构造位置

mongodb - FindOneAndUpdate函数不更新数据库

node.js - 如何设置express中的默认 View 文件夹?

mongodb - 无法从 CL 连接到 mongo 但从 Pymongo 成功

javascript - MongoDB Node JS - 从文档对象中的对象中删除条目

javascript - Node js : Express js asynchronous db query execution-return results got undefiend

javascript - Expressjs 检查重新加载页面上的 header

javascript - NodeJS/SailsJS 中 next() 的具体作用是什么?

node.js - JSON SQlite3 使用 JSON 创建表

java - 如何将 Typesafe Akka 与 Node.js 结合使用