savejs mongoose在保存条目后不返回控制台

时间:2013-02-07 09:54:04

标签: javascript node.js mongodb mongoose

我使用来自控制台的一小段代码来测试MongoDB数据库中的保存/检索条目。它看起来像这样:

var mongoose = require('mongoose');
var models = require('../models');
mongoose.connect('localhost', 'users');
var john = new models.User({ name:'John' });
john.save(function (err, john) {
    if (err) {
        console.log(err)
    }
    else {
        console.log(john.name);
    }
});

运行后,它会在保存条目时显示名称,然后不会将我返回到控制台,也不再显示任何消息。我怎样才能让它回到控制台?

2 个答案:

答案 0 :(得分:4)

只要数据库连接仍处于打开状态,您的node.js程序就不会退出,因此您需要在完成后关闭连接池:

var mongoose = require('mongoose');
var models = require('../models');
mongoose.connect('localhost', 'users');
var john = new models.User({ name:'John' });
john.save(function (err, john) {
    if (err) {
        console.log(err)
    }
    else {
        console.log(john.name);
    }
    mongoose.disconnect();
});

答案 1 :(得分:0)

一旦对save()的调用完成,它就会返回到控制台,但这是在调用回调之前。 如果保存操作需要几分钟,您可以在此期间继续使用控制台。

当保存操作完成时,将调用您的回调并将john.name输出到控制台。在REPL中打印到控制台可能有点棘手,因为它写在你输入的地方。

所以我的猜测是你认为一切都被阻止了,因为你没有看到提示> ,但实际上它就是那里,只是console.log写在那一行。如果您尝试其他命令,它仍然可以工作。