【发布时间】:2019-09-24 07:22:22
【问题描述】:
我正在尝试让我的 Sequelize 迁移脚本在我的节点应用程序启动时自动运行。我已经通过运行 db:migrate 命令手动测试了迁移脚本以确保它们正常运行。
现在,我添加了这个文件来运行迁移脚本:
index.js
const {exec} = require('child_process');
const Sequelize = require('sequelize');
const config = require("config");
const sequelize = new Sequelize(config.get('postgres'));
async function start() {
await new Promise((resolve, reject) => {
const migrate = exec(
'npm run db:migrate',
{env: 'development'},
(err, stdout, stderr) => {
if (err) {
reject(err);
} else {
resolve();
}
}
);
// Forward stdout+stderr to this process
migrate.stdout.pipe(process.stdout);
migrate.stderr.pipe(process.stderr);
});
}
module.exports = {
start: start
};
在 server.js 中:
async function start(appStarted) {
logger.info('Initializing ...');
// execute pending migrations
logger.info('Migrating DB...');
await require('../migrations').start();
logger.info('DB Migration complete.');
当我启动应用程序时,它显示 Migrating DB... 并卡在那里。
我该如何解决这个问题?
【问题讨论】:
-
您可以在 package.json 中添加如下内容:start-and-migrate: "NODE_ENV=development npm run db:migrate and node index.js"
-
您最终解决了这个问题吗?在我的迁移已经运行后,我遇到了类似的问题。 db:migrate 命令卡在“没有执行迁移,数据库模式已经是最新的”。消息,从不解决任何问题。
标签: javascript node.js postgresql sequelize.js sequelize-cli