mongoose .save() 无效

14

我有这些代码在尝试将一个对象保存到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');
    });
});

1
".save()从未成功运行",你怎么知道?你没有给它一个回调函数。 - Kevin B
有什么问题吗?发布错误信息。 - Alvaro Silvino
我编辑了回调函数。我在console.log()处设置了断点,但它从未停在那里。 - Peter Huang
2个回答

31

我在我的代码中遇到了类似的问题。我正在处理用户文档内的一个对象。在进行user.save()之前,我必须先运行user.markModified('object')以确保更改保存到数据库中。

我的运行理论是Mongoose没有自动跟踪从数据库中取消设置或删除的项。


集合中的嵌套对象需要这个技巧。运行良好。谢谢。 - liberborn

4
请阅读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)。 - Peter Huang
1
我在 console.log(err); 处设置了断点,但它从未到达那里。程序也没有退出。看起来它一直在运行。 - Peter Huang
是的,因为如果我在measure.save(function(err){处设置断点,程序会在那里停止。@KevinB - Peter Huang
@sh977218 你可以尝试使用 var measure = new Cache({test: 'test'}); - Alvaro Silvino
1
@sh977218,你在问题中的编辑使得这个问题变得非常混乱。我的意思是,你的问题说代码没有保存,但是一旦你找到了解决方案,你就纠正了代码。此外,你对答案的编辑说“问题是x而不是y”也很令人困惑...问题应该展示问题,答案应该展示正确的代码。另外,也许可以链接到文档中的多个连接部分。 - Mr5o1
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接