mysql - 在 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;
})()
我可以看到两个控制台日志是如何转储到控制台的,但返回后进程没有退出。它不应该工作吗?
提前致谢。
解决方案
您需要断开与数据库的连接,因为它可以防止事件战利品退出。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;
})();
推荐阅读
- angular - 如何将 cdkVirtualScroll 与 cdkTable 结合使用?
- html - 使用 CSS 动画后,页面上未显示其他元素
- python - AttributeError:模块“utils”没有属性“load_data”
- sql-server - 如何在数据透视 SQL Server 中订购日期
- ruby-on-rails - 针对所有用户和所有文章的未定义方法
- javascript - 承诺、.then 和消息
- angular - Angular 7填写表单输入
- django - Django REST Framework - 让 ListAPIView 的行为类似于纯 ListView
- http - 如何将带有 HTTP URL 的 iframe 嵌入到 Blogger
- ios - iOS WatchOS5 - 如何确定手机上 WatchOS 复杂功能的大小?