【问题标题】:Mongoose model.save() hangs猫鼬模型.save() 挂起
【发布时间】:2016-01-23 17:01:36
【问题描述】:

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

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

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

    location.save(function(err){
    
        if (err) {
            throw new Error(err);
        }
    
        console.log(location);
        mongoose.connection.close();
    });
    

    【讨论】:

    • 啊,谢谢。 closedisconnect 有什么区别?
    • mongoose 允许您创建多个连接。我相信disconnect() 关闭了所有这些,而close() 是单数。
    猜你喜欢
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 2017-03-28
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2021-07-14
    相关资源
    最近更新 更多