gpt4 book ai didi

node.js - 脚本完成后,Node JS sequelize 不会自动关闭

转载 作者:行者123 更新时间:2023-12-03 12:12:54 32 4
gpt4 key购买 nike

我在使用 sequelize.js 进行数据库连接设计时遇到了一些问题。我想要实现的是为我的应用程序数据库连接集中连接和配置文件。因此,我创建了一个文件名 database.js,如下所示。

const Sequelize = require("sequelize");
const dbConfig = require("../../config/database.json");

const db = {};

sequelize = new Sequelize({
dialect: dbConfig.dialect,
database: dbConfig.database,
username: dbConfig.username,
password: dbConfig.password,
host: dbConfig.host,
port: dbConfig.port,
operatorsAliases: false,
logging: false,

pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
}
});

db.Sequelize = Sequelize;
db.sequelize = sequelize;

module.exports = db;

如果有任何脚本要使用数据库,我只需要 database.js 文件。但是,当我的脚本完成时出现问题,由于 sequelize 连接没有关闭,进程没有退出(终端卡在那里)。

我试过调用 关闭 在 finally block 上运行,但这会导致其他查询脚本无法正常工作(如果我在每个查询 block 上调用它),因为它们共享相同的瞬间。一旦第一个查询完成,连接将被关闭。
sequelize
.query("SELECT * FROM users WHERE id = ?", {
replacements: [userId],
type: sequelize.QueryTypes.SELECT,
model: User,
mapToModel: true
})
.then(users => {
console.log(users);
})
.finally(() => {
sequelize.close();
});

我可以在最后一个查询上关闭连接,但是很愚蠢的是,每当我得到一个最终需要执行的新查询时,我都必须将关闭移动到新的查询 block 。

我正在寻找一个干净的代码,它可以帮助维护数据库连接,并且能够在执行所有脚本时自动关闭连接。

最佳答案

sequelize.close()返回一个 promise ,所以使用异步函数并调用await sequelize.close()

关于node.js - 脚本完成后,Node JS sequelize 不会自动关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54289488/

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