一尘不染

HasOne和BelongsTo在SOR序列化ORM中的区别

node.js

我正在使用sequelize ORM
开发sails.js应用程序。对于何时需要使用BelongsTo和HasOne,我有些困惑。

该文档指出:

BelongsTo 关联是源模型上存在一对一关系的外键的关联。

HasOne 关联是目标模型上存在一对一关系的外键的关联。

除了指定位置以外,还有其他区别吗?在这两种情况下,行为是否仍保持相同?


阅读 239

收藏
2020-07-07

共1个答案

一尘不染

这是更普遍的问题。

主要区别在于语义。您必须确定关系是什么(有些愚蠢的示例):

人只有一只右臂。 右臂属于一个人。

相反地​​说,看起来有点奇怪:

右臂有一个男人。 一个男人属于右臂。

你可以没有右臂的男人。但是单独的右臂是没有用的。

如果RightArm和Men是模型的续集,它可能看起来像:

Man.hasOne(RightArm);
RightArm.belongsTo(Man);

正如您所注意到的,db表结构也有所不同:

BelongsTo将在源上添加foreignKey,而hasOne将添加到目标上
(Sequelize在表’RightArm’中创建新列’ManId’,但不会在’Man’表中创建’RightArmId’列)。

我看不出更多差异。

2020-07-07