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

标签 node.js sequelize.js

我在使用 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/

相关文章:

node.js - iisnode-IIS7.5 : 405 Method not allowed when performing PUT request

macos - Node 的证书存储在哪里?

javascript - Sequelize 调用结构

node.js - :Sequelize how set returned data order

node.js - MongoNetworkError : failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127. 0.0.1:27017]

javascript - 使用 Nock 或 httpMock 在 catch block 中测试异步代码

javascript - 使用 Sequelize 在 GraphQL 查询中将日期时间字段输出为字符串

node.js - 在sequelize 中创建行时如何引用关联而不假定外键列名称?

graphql - 从 GraphQL 到 Teradata 的数据库连接器

sequelize.js - Sequelizejs - 搜索多对多关系