我正在开发一个定义Mongoose模型的命令行节点脚本,然后使用该模型创建一个新文档,然后保存它。但.save(function(){...});
方法似乎没有完成。它将文档保存在Mongo中,但脚本只是坐在那里而且没有完成。它永远不会返回命令提示符:
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mydb');
var schema = new mongoose.Schema({
name: String,
street: String
});
var Location = mongoose.model('Location', schema);
var location = new Location({name: "Home", street: "Main Street"});
location.save(function(err){
if (err) {
throw new Error(err);
}
console.log(location);
});
终端的结果是:
{ __v: 0,
name: 'Home',
street: 'Main Street',
_id: 562b062d0ce456a912ee9559 }
然后终端就坐在那里。我必须按CTRL + C才能返回命令提示符。关于.save()
方法的一些内容似乎使脚本挂起......但文档确实保存在数据库中。我在这里缺少什么?
答案 0 :(得分:4)
数据库连接仍处于打开状态并正在侦听事件。要使脚本结束,您需要关闭它:
location.save(function(err){
if (err) {
throw new Error(err);
}
console.log(location);
mongoose.connection.close();
});