我使用来自控制台的一小段代码来测试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);
}
});
运行后,它会在保存条目时显示名称,然后不会将我返回到控制台,也不再显示任何消息。我怎样才能让它回到控制台?
答案 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写在那一行。如果您尝试其他命令,它仍然可以工作。