保存条目后,nodejs mongoose不会返回到控制台

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

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); } }); 

运行后,显示保存条目时的名称,然后不会返回到控制台,也不会显示更多消息。 我怎样才能让我回到控制台?

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

 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(); }); 

一旦调用save()完成,它就会返回到控制台,但是在调用callback之前。 如果保存操作花费了几分钟时间,则可以继续使用控制台进行播放。

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

所以我的猜测是你认为所有东西都被阻塞了,因为你没有看到提示符>但实际上它只是在console.log上写的。 如果您尝试其他命令,它应该仍然工作。