为什么这个简单的Node,Sequelize Promise代码会挂起?

时间:2017-08-23 10:49:13

标签: node.js promise sequelize.js

我正在尝试使用node.js和sequelize进行简单的命令行数据库转换。我已经将我的错误代码简化为以下内容,但它永远不会返回:

// Set up database connection and models
var models  = require('../models_sequelize');

models.User.findOne()
  .then(a => {
    console.log(a.name);
  });

我打印了一个名字,但随后脚本挂起。怎么了?如何调试这个以查看卡住了什么?我得到的印象是,有一个孤儿承诺没有实现,但我不明白在哪里或为什么。我一定错过了一些明显的东西。

如果我从节点控制台以交互方式运行它,则返回正常。

1 个答案:

答案 0 :(得分:1)

Sirko的评论re:close()给了我一些东西。我可以用以下代码停止挂起:

var models  = require('../models_sequelize');

models.User.findOne()
  .then(a => {
    console.log(a.name);
    models.sequelize.close();
  })

或者,这似乎也起作用,因为我猜它做了完全相同的事情:     var models = require(' ../ models_sequelize');

models.User.findOne()
  .then(a => {
    console.log(a.name);
  })
  .finally(() => {
    models.sequelize.close();
  });

我还发现了一些关于连接池超时的问题,但我认为这不会影响我的简单用例。我想它会在更复杂的例子中发挥作用。

仍然希望找到一个很好的参考,为什么这是必要的而不仅仅是我的猜测。