我正在尝试使用node.js和sequelize进行简单的命令行数据库转换。我已经将我的错误代码简化为以下内容,但它永远不会返回:
// Set up database connection and models
var models = require('../models_sequelize');
models.User.findOne()
.then(a => {
console.log(a.name);
});
我打印了一个名字,但随后脚本挂起。怎么了?如何调试这个以查看卡住了什么?我得到的印象是,有一个孤儿承诺没有实现,但我不明白在哪里或为什么。我一定错过了一些明显的东西。
如果我从节点控制台以交互方式运行它,则返回正常。
答案 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();
});
我还发现了一些关于连接池超时的问题,但我认为这不会影响我的简单用例。我想它会在更复杂的例子中发挥作用。
仍然希望找到一个很好的参考,为什么这是必要的而不仅仅是我的猜测。