【发布时间】:2019-07-01 22:29:13
【问题描述】:
两个种子文件
const faker = require('faker')
exports.seed = (knex, Promise) => {
// Deletes ALL existing entries
return knex('posts')
.truncate()
.del()
.then(() => {
// Inserts seed entries
return knex('posts').insert([
{
id: 1,
title: faker.lorem.words(),
body: '12 - 10',
answers: '[12]',
user_id: 1
},
{
id: 2,
title: faker.lorem.words(),
body: '12 - 10 + 123',
answers: '[12]',
user_id: 1
},
{
id: 3,
title: faker.lorem.words(),
body: '12 - 10 / 901',
answers: '[12]',
user_id: 1
}
])
})
}
exports.seed = function(knex, Promise) {
// Deletes ALL existing entries
return knex('users')
.truncate()
.del()
.then(function() {
// Inserts seed entries
return knex('users').insert([
{ id: 1, email: 'george@stoplion', username: 'stoplion' },
{ id: 2, email: 'angelmcfood@gmail.com', username: 'testuser1' }
])
})
}
Posts 有一个 user_id 外键引用 User.id。
我想在每次测试之前截断所有数据和种子。但收到此错误:
Error while executing "/Users/me/Code/TallyCat-App/next-
tally/db/seeds/1_users.js"
seed: delete from "users" - update or delete on table "users" violates
foreign key constraint "posts_user_id_foreign" on table "posts"
【问题讨论】:
-
我认为这与种子运行的顺序有关,您应该先运行
users种子,因为posts有一个指向user_id 的外键。如果您发布这些表的迁移文件会有所帮助。
标签: knex.js