Mongoose model.save()挂起

时间:2015-10-24 04:20:29

标签: node.js mongodb mongoose

我正在开发一个定义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()方法的一些内容似乎使脚本挂起......但文档确实保存在数据库中。我在这里缺少什么?

1 个答案:

答案 0 :(得分:4)

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

location.save(function(err){

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

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