2

我使用控制台中的一小段代码来测试在 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);
    }
});

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

4

2 回答 2

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();
});
于 2013-02-07T13:28:50.990 回答
0

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

保存操作完成后,将调用您的回调并将 john.name 打印到控制台。在 REPL 中打印到控制台可能会有些棘手,因为它是在您输入的位置写入的。

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

于 2013-02-07T10:10:01.863 回答