Node.js Mongoose model.save()挂起
我正在编写一个命令行节点脚本,该脚本定义了一个Mongoose模型,然后使用该模型创建一个新文档,然后保存它。但是Node.js Mongoose model.save()挂起,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在编写一个命令行节点脚本,该脚本定义了一个Mongoose模型,然后使用该模型创建一个新文档,然后保存它。但是.save(function(){…})方法似乎没有完成。它将文档保存在Mongo中,但脚本只是放在那里,没有完成。它永远不会返回到命令提示符: var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/mydb'); var schema = new mongoose.Schema({
.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()
方法的某些内容似乎使脚本挂起。。。但文档确实保存在数据库中。我这里缺少什么?数据库连接仍处于打开状态,正在侦听事件。要结束脚本,您需要关闭它:
location.save(function(err){
if (err) {
throw new Error(err);
}
console.log(location);
mongoose.connection.close();
});
啊,谢谢。close
和disconnect
之间有什么区别?mongoose允许您创建多个连接。我相信disconnect()
会关闭所有这些,而close()
是单数。