【问题标题】:Why does Mongodb update work but mongoose doesn't?为什么 Mongodb 更新有效,而 mongoose 无效?
【发布时间】:2017-07-28 21:19:31
【问题描述】:

当我查询 monodb shell 时,我能够更新文档。 这是我使用的 mongodb 命令: db.users.update({name:"bob"}, {$set: {email:"newEmail@gmail.com} })

但是当我尝试用猫鼬更新它时,它不起作用。 我错过了什么??

这是猫鼬中的代码:

// 创建用户架构

var userSchema = mongoose.Schema({
  name: String,
  email: String
}, {collection: "users"});

// 创建模型

var userModel = mongoose.model("userModel", userSchema);

// 更新一个文档

userModel.update({name:"bob"}, {$set: {email:"newEmail@gmail.com"}} );

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    你应该等待回调看看操作是否成功

    userModel.update({ name: "bob" }, 
                     {$set: { email:"newEmail@gmail.com" }},
                     function (err, user) {
                         if (err) return handleError(err);
                         res.send(user);
                     });
    

    mongoose 正在异步工作,您应该等待回调中的响应。还有一种同步方式可以做到这一点,但不建议使用 node 来阻塞堆栈。

    【讨论】:

    • 我不需要任何回调,并且在文档中看到它是一个可选参数,所以我放弃了它。但显然这是必需的。 Mongoose 的文档需要一些更新。谢谢你好先生!
    • 至少通过这种方式您可以看到update 操作的结果,确实可能是其他问题,但是如果出现错误,您会在node 实例的控制台中看到它.
    【解决方案2】:

    如果你不需要回调中的结果,你可以使用它

    userModel.update({name:"bob"}, {$set: {email:"newEmail@gmail.com"}}).exec();
    

    【讨论】:

      猜你喜欢
      • 2020-03-09
      • 2011-07-05
      • 2012-01-15
      • 2013-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多