我的模特是:
module.exports = function(sequelize, DataTypes) {
return Person = sequelize.define('Person', {
PersonTime: {
type: DataTypes.INTEGER,
allowNull: false
},
message: {
type: DataTypes.STRING,
allowNull: false
}
}, {
classMethods: {
associate: function(models) {
return Person.hasMany(models.Thought, {
foreignKey: 'PersonId'
});
}
}
});
};
我想强迫每个人都属于一个思想,因此在Thought
表格中,我希望PersonId
字段是必需的。我怎么能这样做?
答案 0 :(得分:1)
您想要的代码可能是:
Person.hasMany(Thought)
Thought.belongsTo(Person)
但是我试过这样就不会在数据库级别给你一个“真正的”外键,这就是你想要的。经过一番试验和错误的搜索,我得出了这个:
Thought.belongsTo(Person, { constraints: true, foreignKeyConstraint:true } );
Person.hasMany(Thought)
当您创建SQL .sync()
时:
CREATE TABLE IF NOT EXISTS `Persons` (
`id` INTEGER NOT NULL auto_increment ,
`PersonTime` INTEGER NOT NULL,
`message` VARCHAR(255) NOT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE IF NOT EXISTS `Thoughts` (
`id` INTEGER NOT NULL auto_increment,
`text` VARCHAR(255),
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NOT NULL,
`PersonId` INTEGER,
PRIMARY KEY (`id`),
FOREIGN KEY (`PersonId`) REFERENCES `Persons` (`id`)
);
documentation中的更多详细信息,虽然这是帮助我使其发挥作用的问题的答案:Sequelize.js foreign key