我正在尝试将 Knex.js 与 express 和 Node.js 一起设置。
我将 SQLite3 用于 Knex.js。
目前我遇到的问题是 Knex 使用表正确创建了外键,但在插入时只是忽略了它们(在外部数据库浏览器中,我可以看到外键已设置,并且我无法添加任何不存在的外键键)。但我希望我不能用 knex 插入元组,不满足外键约束。
以下是创建表的方法:
knex.schema.hasTable('User').then(res => {
if (res)
return;
knex.schema.createTable('User', function (table) {
table.increments('id').primary();
table.string('username').notNullable().unique();
}).then(res => {
console.log("Table User Created");
});
});
knex.schema.hasTable('Room').then(res => {
if (res)
return;
knex.schema.createTable('Room', function (table) {
table.increments('id').primary();
table.string('room_name').notNullable().unique();
table.integer('owner_id').unsigned().notNullable();
table.foreign('owner_id').references('User.id');
// table.foreign('owner_id').references('id').inTable('User'); //Not Working too
}).then(res => {
console.log("Table Room Created");
});
});
这里临时添加测试数据。
knex('user').insert({
username: 'f',
mail: 'f@f.de'
}).then(res => {
console.log(res);
});
knex('room').insert({
room_name: 'r',
owner_id: 2 // THIS SHOULD NOT WORK!!!
}).then(res => {
console.log(res);
});