gpt4 book ai didi

node.js - 为什么这个简单的 Node、Sequelize Promise 代码会挂起?

转载 作者:搜寻专家 更新时间:2023-10-31 23:58:37 24 4
gpt4 key购买 nike

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

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

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

我打印了一个名字,但随后脚本挂起。怎么了?我该如何调试它以查看卡住了什么?我的印象是有一个未实现的孤儿 promise ,但我不明白在哪里或为什么。我一定遗漏了一些明显的东西。

如果我从 Node 控制台以交互方式运行相同的程序,它会返回正常。

最佳答案

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();
});

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

仍然想找到一个很好的引用来说明为什么这是必要的,而不仅仅是我的猜测。

关于node.js - 为什么这个简单的 Node、Sequelize Promise 代码会挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45837609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com