sequelize:两个模型之间的关联

时间:2018-06-12 14:55:27

标签: postgresql sequelize.js

有两种模式,用户和上下文。从用户到上下文以及从上下文到用户的一对一关系。在我的场景模型中,两者都已存在,但没有定义关联。我已将关联定义如下:

用户:

User.hasMany(context, {as: 'context', foreignKey: 'UserId', sourceKey: 'id'});

上下文

var users = User(sequelize);
Context.belongsTo(users,{foreignKey: 'UserId'});

上下文迁移如下:

'use strict';

module.exports = {
  up:(queryInterface, Sequelize) => {
    return queryInterface.addConstraint('Context', ['UserId'], {
        type: 'FOREIGN KEY',
        name: 'Context_FK_userId',
        references: {
            table: 'User',
            field: 'id',
        }
  }).then(() =>queryInterface.addColumn(
      'Context',
      'createdBy',
      {
          type: Sequelize.STRING,
          allowNull: true
      }
  )).then(() => queryInterface.addColumn(
      'Context',
      'lastModifiedBy',
      {
          type: Sequelize.STRING,
          allowNull: true,
      }
  ))},
  down: (queryInterface, Sequelize) => {
    return queryInterface.removeConstraint('Context', 'Context_FK_userId')
    .then(() => queryInterface.removeColumn('Context', 'createdBy'))
    .then(() => queryInterface.removeColumn('Context', 'lastModifiedBy'))
  }
};

当我迁移它时会出现错误" ERROR:column" UserId"外键约束中引用的内容不存在"。

0 个答案:

没有答案