Node.js Mongoose model.save()挂起

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({

我正在编写一个命令行节点脚本,该脚本定义了一个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()
方法的某些内容似乎使脚本挂起。。。但文档确实保存在数据库中。我这里缺少什么?

数据库连接仍处于打开状态,正在侦听事件。要结束脚本,您需要关闭它:

location.save(function(err){

    if (err) {
        throw new Error(err);
    }

    console.log(location);
    mongoose.connection.close();
});

啊,谢谢。
close
disconnect
之间有什么区别?mongoose允许您创建多个连接。我相信
disconnect()
会关闭所有这些,而
close()
是单数。