nodejs knex迁移不等待上一个文件完成

时间:2018-07-14 10:22:39

标签: javascript node.js postgresql migration knex.js

我正在尝试使用很多外键迁移表。我按正确的顺序排列它们,以便在要求时外键始终存在。

我正在使用postgresSQL。

这是我的迁移顺序:

  • 用户
  • 项目
  • 需求
  • 建议

当我在提案迁移中要求user_id和project_id时,它的效果很好。当我在需求迁移中要求它时,它告诉我以下内容:

<ul>
  <li id="main">
    <a href="javascript:void(0)">List</a>
    <ul class="submenu" >
      <li onclick="closesSan()" >Bacon</li>
      <li onclick="closesSan()">Tuna</li>
      <li onclick="closesSan()">Chicken</li>
    </ul>
  </li>
</ul>

这是用户迁移:

migration failed with error: alter table "need"."need" add constraint "user_id" foreign key ("id") references "member"."user" ("id") - column "id" referenced in foreign key constraint does not exist

这是需要迁移的地方:

exports.up = (knex, Promise) => {
    return createMemberSchema()
        .then(createUser);

    function createMemberSchema(){
        return knex.schema.raw('CREATE SCHEMA member');
    }
    function createUserParent(){
        return knex.schema
            .withSchema('member')
            .createTable('user', (table) => {
                table.increments();
                table.string('username').unique().notNullable();
                table.string('email').unique().notNullable();
                table.string('password').notNullable();
                table.timestamps();
            });
    }
});

exports.down = (knex, Promise) => {
    return dropUser()
        .then(dropMemberSchema);

    function dropMemberSchema(){
        return knex.schema.raw('DROP SCHEMA member');
    }
    function dropUser() {
        return knex.schema
            .withSchema('member')
            .dropTable('user');
    }
    });

与提案迁移完全相同,但是在这里效果很好。

0 个答案:

没有答案