【问题标题】:mongoose .save() doesn't work猫鼬 .save() 不起作用
【发布时间】:2015-10-02 18:10:12
【问题描述】:

我让那些代码运行尝试将一个对象保存到MongoDB中。

.save() 从未成功运行。代码运行良好。

.save() 方法不起作用

var conn = mongoose.createConnection(mongoUrl, {auth: {authdb: "admin"}});
conn.on('error', function (err) {
    throw err;
});
conn.once('open', function callback() {
    console.log("connected to " + mongoUrl);
    var cacheSchema = mongoose.Schema({}, {strict: false});
    cacheSchema.set('collection', 'caches');
    // you need to specify which connection is uing.
    var Cache = conn.model('cache', cacheSchema);
    var measure = new Cache();
    measure['test'] = "test";
    measure.save(function(err){
        console.log('test');
    });
});

【问题讨论】:

  • the .save() never got success run 你怎么知道?你没有给它回调。
  • 怎么了?发布错误
  • 我编辑了回调。我将断点放在 console.log() 处。它从未停止过

标签: node.js mongodb mongoose


【解决方案1】:

我刚刚在我的代码中遇到了类似的问题。对于我来说,我正在处理我的用户文档中的一个对象。我必须在user.save() 之前运行user.markModified('object') 以确保将更改保存到数据库中。 我的运行理论是 Mongoose 不会自动跟踪未设置或从数据库中删除的项目

【讨论】:

  • 集合中的嵌套对象需要这个技巧。工作正常。谢谢。
【解决方案2】:

请阅读 this part 来自 mongoose 的文档并尝试以下操作:

   var measure = new Cache({test:'teste'}); 
   // or measure.set('test', 'teste');
   measure.save(function (err) {
                    console.log(err);
                });

如果有问题,您将能够看到。

更新问题正在使用:

var Cache = conn.model('cache', cacheSchema);

而不是

var Cache = mongoose.model('cache', cacheSchema);

【讨论】:

  • 我这样做了,但我无法到达这一行:console.log(err)
  • 我在 console.log(err);它永远不会到达那里。该程序也没有退出。看起来它一直在运行。
  • 您确定正在触发打开事件吗?
  • 是的,因为如果我在 measure.save(function(err){ 处设置断点,程序就会停在那里。@KevinB
  • @sh977218 您对问题的编辑使这个问题非常混乱。我的意思是你的问题说代码没有保存,但是一旦你找到了解决方案,你就更正了代码。此外,您对“问题是 x 而不是 y”的答案的编辑也令人困惑……问题应该显示问题,答案应该显示正确的代码。也可能链接到 multiple connections 部分中的文档。
猜你喜欢
  • 2021-02-10
  • 2016-06-14
  • 2016-01-23
  • 2017-03-28
  • 2021-07-14
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 2018-05-14
相关资源
最近更新 更多