Knex.js 忽略的外键约束

问题描述

我正在尝试将 Knex.js 与 express 和 Node.js 结合起来设置。

我在 Knex.js 中使用 sqlite3

目前我遇到的问题是 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);
});

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)