何时在Loopback 4中使用hasMany和belongsTo关系?

时间:2019-04-05 17:44:18

标签: node.js loopbackjs

我有一个关于LoopBack 4及其关系的简单问题。

让我们以官方的TodoList为例。

@hasMany中有一个TodoList.model的定义,我对此没有疑问。我的问题是关于BelongsTo关系,是否还需要在@belongsTo中定义todo.model?定义这两种关系是否总是[strong>总是?或者我怎么知道该选择哪种关系?如果仅需要一种关系,为什么要选择两个关系?如果我选择一个又一个,有什么区别?

我对这个话题有很多疑问。

1 个答案:

答案 0 :(得分:0)

这两种关系类型虽然代表相似的关系,但彼此之间存在细微的差异。

从文档here中可以看到,

  

hasMany关系表示模型与   通过参照完整性的另一个模型。参照完整性   由目标模型上的外键约束实施   通常引用源模型上的主键。这种关系   表示声明或源模型的每个实例都为零   或目标模型的更多实例。例如,在一个应用程序中   与客户和订单一起,客户可以有很多订单

因此,如果需要建立FK关系1:n,则将使用此关系。但是,这将在FK处于“一侧”时使用。意思是,customer(一个)表将具有orders(许多)列,作为带有Order表的FK数组。

从文档here中可以看到,

  

belongsTo关系表示模型与   通过参照完整性的另一个模型。参照完整性   由源模型上的外键约束实施   通常引用目标模型上的主键。这种关系   表示声明或源模型的每个实例都属于   恰好是目标模型的一个实例。例如,在   客户和订单的应用程序,订单始终属于   恰好一个客户

因此,如果需要建立FK关系1:n,则将使用此关系。但是,当FK位于“许多”侧时,将使用此功能。意思是,“订单(许多)”表将具有“客户(一)”列作为带有“客户”的FK。这里不需要数组。

在大多数情况下,您将使用Belongs与此类情况建立联系。这几乎适用于所有情况。我还没有遇到使用hasMany的任何具体情况。