我有一个关于LoopBack 4及其关系的简单问题。
让我们以官方的TodoList为例。
@hasMany
中有一个TodoList.model
的定义,我对此没有疑问。我的问题是关于BelongsTo关系,是否还需要在@belongsTo
中定义todo.model
?定义这两种关系是否总是[strong>总是?或者我怎么知道该选择哪种关系?如果仅需要一种关系,为什么要选择两个关系?如果我选择一个又一个,有什么区别?
我对这个话题有很多疑问。
答案 0 :(得分:0)
这两种关系类型虽然代表相似的关系,但彼此之间存在细微的差异。
从文档here中可以看到,
hasMany关系表示模型与 通过参照完整性的另一个模型。参照完整性 由目标模型上的外键约束实施 通常引用源模型上的主键。这种关系 表示声明或源模型的每个实例都为零 或目标模型的更多实例。例如,在一个应用程序中 与客户和订单一起,客户可以有很多订单
因此,如果需要建立FK关系1:n,则将使用此关系。但是,这将在FK处于“一侧”时使用。意思是,customer(一个)表将具有orders(许多)列,作为带有Order表的FK数组。
从文档here中可以看到,
belongsTo关系表示模型与 通过参照完整性的另一个模型。参照完整性 由源模型上的外键约束实施 通常引用目标模型上的主键。这种关系 表示声明或源模型的每个实例都属于 恰好是目标模型的一个实例。例如,在 客户和订单的应用程序,订单始终属于 恰好一个客户
因此,如果需要建立FK关系1:n,则将使用此关系。但是,当FK位于“许多”侧时,将使用此功能。意思是,“订单(许多)”表将具有“客户(一)”列作为带有“客户”的FK。这里不需要数组。
在大多数情况下,您将使用Belongs与此类情况建立联系。这几乎适用于所有情况。我还没有遇到使用hasMany的任何具体情况。