Knex 链接 table 在迁移中创建
Knex chaining table creation in migrations
我有以下迁移代码:
exports.up = function(knex) {
return knex.schema.createTable('users', function(table){
table.increments();
table.string('email', 100).unique().notNullable();
table.string('password').notNullable();
})
.createTable('posts', function(table){
table.increments();
table.string('title').notNullable();
table.string('content').notNullable();
table.timestamp('created_at').defaultTo(knex.fn.now());
table.int('userId').notNullable().references('id').inTable('users');
})
.createTable('comments', function(table){
table.increments();
table.string('content').notNullable();
table.timestamp('created_at').defaultTo(knex.fn.now());
table.int('userId').notNullable().references('id').inTable('users');
table.int('postId').notNullable().references('id').inTable('posts');
})
};
exports.down = function(knex) {
return knex.schema.dropTable('users')
.dropTable('posts')
.dropTable('comments');
};
它生成以下错误:
migration failed with error: create table "posts" ("id" serial primary key, "title" varchar(255) not null, "content" varchar(255) not null, "created_at" timestamptz default CURRENT_TIMESTAMP, "userId" undefined not null) - type "undefined" does not exist
似乎很难将用户和帖子联系起来 table,但我不确定为什么。
想通了。
这里不是int
table.int('userId').notNullable().references('id').inTable('users');
应该是整数。
table.integer('userId').notNullable().references('id').inTable('users');
我有以下迁移代码:
exports.up = function(knex) {
return knex.schema.createTable('users', function(table){
table.increments();
table.string('email', 100).unique().notNullable();
table.string('password').notNullable();
})
.createTable('posts', function(table){
table.increments();
table.string('title').notNullable();
table.string('content').notNullable();
table.timestamp('created_at').defaultTo(knex.fn.now());
table.int('userId').notNullable().references('id').inTable('users');
})
.createTable('comments', function(table){
table.increments();
table.string('content').notNullable();
table.timestamp('created_at').defaultTo(knex.fn.now());
table.int('userId').notNullable().references('id').inTable('users');
table.int('postId').notNullable().references('id').inTable('posts');
})
};
exports.down = function(knex) {
return knex.schema.dropTable('users')
.dropTable('posts')
.dropTable('comments');
};
它生成以下错误:
migration failed with error: create table "posts" ("id" serial primary key, "title" varchar(255) not null, "content" varchar(255) not null, "created_at" timestamptz default CURRENT_TIMESTAMP, "userId" undefined not null) - type "undefined" does not exist
似乎很难将用户和帖子联系起来 table,但我不确定为什么。
想通了。
这里不是int
table.int('userId').notNullable().references('id').inTable('users');
应该是整数。
table.integer('userId').notNullable().references('id').inTable('users');