Sequelize hasOne 关联限制
Posted
技术标签:
【中文标题】Sequelize hasOne 关联限制【英文标题】:Sequelize hasOne association limitation 【发布时间】:2016-09-14 12:44:41 【问题描述】:如果Member
和MemberAddition
是模型;
我创建了这样的关联:
Member.hasOne(MemberAdditional);
MemberAddition.belongsTo(Member);
使用自动生成的密钥 MemberId 创建一对一的关系
但是我如何将关联的 MemberAddition 记录限制为一个。
我使用内置函数进行关联:
// Used ES7 async/await
const member = await Member.create( ... );
const addition1 = await MemberAddition.create( ... );
const addition2 = await MemberAddition.create( ... );
await addition1.setMember(member);
await addition2.setMember(member); // Should be failed or set addition1 MemberId null
谢谢
【问题讨论】:
【参考方案1】:在您的 MemberAddition 模型上添加具有唯一约束的字段。
memberId:
type: Sequelize.INTEGER,
unique: true
【讨论】:
如果我必须为自动生成的相关字段设置唯一性,hasMany 和 hasOne 有什么不同? 我明白你的意思,尽管我认为答案是:hasMany 会将 getMemberAdditionals() 添加到 Member 的实例中,而 hasOne 会将 getMember() 添加到 MemberAdditional 的实例中。也许一个不错的选择是通过例如:Member.hasOne(MemberAdditional, through: unique: true ),但似乎 hasOne 不接受该选项。 奇怪的是hasOne不会自动将实例数限制为1。那么它和hasMany没有区别以上是关于Sequelize hasOne 关联限制的主要内容,如果未能解决你的问题,请参考以下文章