有两种模式,用户和上下文。从用户到上下文以及从上下文到用户的一对一关系。在我的场景模型中,两者都已存在,但没有定义关联。我已将关联定义如下:
用户:
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"外键约束中引用的内容不存在"。