首页 > 解决方案 > 在 sequelize.athenticate() 上使用 await 时,Node.js 脚本不会结束

问题描述

这是我用来启动 Sequelize 和验证的代码。我需要等待 authenticate() 方法以确保数据库已准备好供其他应用程序组件使用:

'use strict';

(async () =>
{
    let Sequelize=require('sequelize');
    let seq = new Sequelize('admin_apptoolset', 'root', 'root', 
        {
            host: 'localhost',
            dialect: 'mysql',
            operatorsAliases: false,
            pool: 
            {
                max: 5,
                min: 0,
                acquire: 30000,
                idle: 10000
            }
        });

        console.log("Trying to connect to database...");
        await seq.authenticate();
        console.log("Connected to database...");

        return;
})()

我可以看到两个控制台日志是如何转储到控制台的,但返回后进程没有退出。它不应该工作吗?

提前致谢。

标签: mysqlnode.jssequelize.js

解决方案


您需要断开与数据库的连接,因为它可以防止事件战利品退出。seq.close();在前面添加return

(async () => {
    let Sequelize = require("sequelize");
    let seq = new Sequelize("admin_apptoolset", "root", "root", {
        host: "localhost",
        dialect: "mysql",
        operatorsAliases: false,
        pool: {
            max: 5,
            min: 0,
            acquire: 30000,
            idle: 10000
        }
    });
    console.log("Trying to connect to database...");
    await seq.authenticate();
    console.log("Connected to database...");
    seq.close(); // close connection
    return;
})();

推荐阅读