我正在使用sequelize ORM 开发sails.js应用程序。对于何时需要使用BelongsTo和HasOne,我有些困惑。
该文档指出:
BelongsTo 关联是源模型上存在一对一关系的外键的关联。 HasOne 关联是目标模型上存在一对一关系的外键的关联。
BelongsTo 关联是源模型上存在一对一关系的外键的关联。
HasOne 关联是目标模型上存在一对一关系的外键的关联。
除了指定位置以外,还有其他区别吗?在这两种情况下,行为是否仍保持相同?
这是更普遍的问题。
主要区别在于语义。您必须确定关系是什么(有些愚蠢的示例):
人只有一只右臂。 右臂属于一个人。
相反地说,看起来有点奇怪:
右臂有一个男人。 一个男人属于右臂。
你可以没有右臂的男人。但是单独的右臂是没有用的。
如果RightArm和Men是模型的续集,它可能看起来像:
Man.hasOne(RightArm); RightArm.belongsTo(Man);
正如您所注意到的,db表结构也有所不同:
BelongsTo将在源上添加foreignKey,而hasOne将添加到目标上 (Sequelize在表’RightArm’中创建新列’ManId’,但不会在’Man’表中创建’RightArmId’列)。
我看不出更多差异。