我正在使用knex进行播种,我有一个名为development的文件夹,其中包含所有种子文件。
我想要的是:如何播种单个文件。
我使用的命令是:knex seed:run --env = development 但是这个命令是为所有文件播种,我在db上获得了重复的行。
假设我昨天创建了种子文件,并且我播种它们,今天我想添加另一个种子文件,我只想为这个文件播种,而不是昨天的文件。
Laravel的一个例子是:php artisan db:seed --class = ProductTableSeeder
由于
答案 0 :(得分:4)
只需将脚本移动到除所需脚本之外的其他文件夹,运行种子并将脚本复制回来。
seed API只有两个命令,make和run。这是来自文档。
runknex.seed.run([配置])
运行当前环境的所有种子文件。
因此所有脚本都将在每次运行时执行
答案 1 :(得分:1)
对于那些在2019年以后进行检查的人
根据knex文档
要运行特定的种子文件,请执行:
$ knex seed:run --specific=seed-filename.js
答案 2 :(得分:1)
不工作: knex seed:run --specific = seed-filename.js
const file_name = path.basename(__filename)
const seedIsExist = await knex('knex_seeds_lock').where({ file_name }).first()
if (seedIsExist) {
return
}
await knex('knex_seeds_lock').insert({ file_name })
因此,在数据库中,您将获得早先已经运行的所有种子
答案 3 :(得分:0)
就个人而言,我只是将我的承诺包装在cell.setupWithAnswer(answer: self.answers[indexPath.row])
中的exports.up / down中,然后将这些承诺切换为我不想运行的假。
答案 4 :(得分:0)
Artem的解决方案效果很好: 您只需要创建表:knex_seeds_lock
我使用的代码在这里:
import {BrowserRouter as Router, Route, Link, Switch} from 'react-router-dom'