如何使用 db-migrate 删除和重新 运行 迁移
how to drop and re-run migrations with db-migrate
我正在尝试在 运行 所有测试之前为数据库播种。所以我创建了一个新文件 bootstrapTest.js
并将其包含在我的测试源文件中,如下所示 gulp.src(['test/bootstrapTest.js', 'test/**/*.js']
bootstrapTest.js
现在需要重置数据库并重新运行 迁移和播种数据。所以我创建了一个子进程并让它 运行 一个 shell 脚本 (seed.sh
)。
`const exec = require('child_process').exec;
exec('./seed.sh',
{env: {database__host: 'localhost', database__user: 'username',
database__port: 3306, database__password: 'password'}}, function
(error, stdout, stderr) { ...
}`
这就是我的 seed.sh
的样子
#!/bin/bash
./node_modules/.bin/db-migrate reset --env test
echo '## Database truncated'
./node_modules/.bin/db-migrate up --env test
echo '## Database migrated'
在控制台的输出中,我只看到了回显输出,没有看到 运行 的命令。我已经验证确实 db-migrate 不是 运行ning.
知道为什么 db-migrate
不是 运行ning 吗?当我从我的 zsh 手动 运行 时,它工作正常。
想出了一个更好的方法来达到相同的结果。在开始测试之前,我没有通过 shell 脚本 运行 添加它们,而是将它们添加到我的 package.json 脚本和 运行 该脚本中。所以我的 package.json 看起来像这样
"scripts": {
"testdb": "db-migrate reset --env test && db-migrate up --env test",
"test": "npm run testdb && ./node_modules/.bin/gulp"
}
假设,你是运行节点npm start
。
可以使用 npm hooks
.
进行 db 迁移
"scripts" : {
"prestart":"db-migrate reset --env test && db-migrate up --env test",
"start" : "node server.js",
"poststart" :"echo 'do after server run'"
},
简而言之,
$. npm start //command fired on terminal
//output
npm preinstall //first to run
npm start //now this
当你这样做时,npm start
,在它之前 prestart
脚本将被执行,然后 start
脚本。
我正在尝试在 运行 所有测试之前为数据库播种。所以我创建了一个新文件 bootstrapTest.js
并将其包含在我的测试源文件中,如下所示 gulp.src(['test/bootstrapTest.js', 'test/**/*.js']
bootstrapTest.js
现在需要重置数据库并重新运行 迁移和播种数据。所以我创建了一个子进程并让它 运行 一个 shell 脚本 (seed.sh
)。
`const exec = require('child_process').exec;
exec('./seed.sh',
{env: {database__host: 'localhost', database__user: 'username',
database__port: 3306, database__password: 'password'}}, function
(error, stdout, stderr) { ...
}`
这就是我的 seed.sh
的样子
#!/bin/bash
./node_modules/.bin/db-migrate reset --env test
echo '## Database truncated'
./node_modules/.bin/db-migrate up --env test
echo '## Database migrated'
在控制台的输出中,我只看到了回显输出,没有看到 运行 的命令。我已经验证确实 db-migrate 不是 运行ning.
知道为什么 db-migrate
不是 运行ning 吗?当我从我的 zsh 手动 运行 时,它工作正常。
想出了一个更好的方法来达到相同的结果。在开始测试之前,我没有通过 shell 脚本 运行 添加它们,而是将它们添加到我的 package.json 脚本和 运行 该脚本中。所以我的 package.json 看起来像这样
"scripts": {
"testdb": "db-migrate reset --env test && db-migrate up --env test",
"test": "npm run testdb && ./node_modules/.bin/gulp"
}
假设,你是运行节点npm start
。
可以使用 npm hooks
.
"scripts" : {
"prestart":"db-migrate reset --env test && db-migrate up --env test",
"start" : "node server.js",
"poststart" :"echo 'do after server run'"
},
简而言之,
$. npm start //command fired on terminal
//output
npm preinstall //first to run
npm start //now this
当你这样做时,npm start
,在它之前 prestart
脚本将被执行,然后 start
脚本。