我对node和knex相对较新,我正在创建一个名为g42beats_dev的数据库,我在其中迁移了一个歌曲表。迁移看起来如下:
exports.up = function(knex, Promise) {
return knex.schema.createTable('songs', (table) => {
table.increments('id').primary();
table.integer('user_id').references('id').inTable('users').notNullable().onDelete('cascade');
table.string('song_name').notNullable().defaultTo('');
table.string('artist').notNullable().defaultTo('');
table.timestamps(true,true);
});
};
exports.down = function(knex, Promise) {
return knex.schema.dropTable('songs');
};

问题在于我试图播种数据。我编写了以下代码来播种数据:
exports.seed = function(knex, Promise) {
// Deletes ALL existing entries
return knex('songs').del()
.then(function() {
// Inserts seed entries
return knex('songs').insert([
{
id: 1,
user_id: 1,
song_name: 'Ode to Viceroy',
artist: 'Mac DeMarco',
created_at: new Date(),
updated_at: new Date()
},
{
id: 2,
user_id: 1,
song_name: 'Apocalypse Dreams',
artist: 'Tame Impala',
created_at: new Date(),
updated_at: new Date()
},
{
id: 3,
user_id: 14,
song_name: 'เพื่อนรัก',
artist: 'Parkinson',
created_at: new Date(),
updated_at: new Date()
}
])
.then(() => {
return knex.raw("SELECT setval('songs_id_seq', (SELECT MAX(id) FROM songs))");
});
});
};

创建后我运行了knex seed:run songs
,但这并没有播种数据。
有人可以提供一些有关为什么会发生这种情况的见解吗?也许是一种我可以完成这些数据播种的方法。 谢谢。