【问题标题】:Sequelize hasOne association limitationSequelize hasOne 关联限制
【发布时间】:2016-09-14 12:44:41
【问题描述】:

如果MemberMemberAddition 是模型;

我创建了这样的关联:

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

谢谢

【问题讨论】:

    标签: javascript mysql associations sequelize.js


    【解决方案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没有区别
    猜你喜欢
    • 2013-10-05
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多