定义BelongsTo关系有什么好处?
当我定义HasMany关系时,我可以执行我的所有查询而不会遗漏任何人(如果您发现使用BelongsTo关系很重要,我更愿意给我举个例子)。
发布于 2020-12-08 00:46:40
好处是能够翻转关系中的“基础”和“孩子”。LoopBack 4关系过滤器类似于,这意味着筛选器必须从基本模型中限定范围。
其中,不能使用模型查询(
create()、find()、replaceById()等)使用的过滤器来根据父模型的值对模型进行筛选。看它的GitHub问题。
例如,我们可能有许多客户的订单:
@hasMany(() => Order)
orders?: Order[];这种关系允许查询“由客户发出的订单”或“由过滤后的客户列表发出的订单”,而不是反过来;“发出该订单的客户”或“作出筛选订单列表的客户”。
属于关系通过在引用客户的顺序上创建一个键来解决这个问题:
@belongsTo(() => Customer)
customerId: number;这意味着我们现在可以查询“是哪个客户下的订单”或“哪些客户做了筛选的订单列表”。
另一个重要的因素是,由于ANSI SQL没有表示这种关系的方法,所以不能将有许多关系的关系变成强关系。来自医生们
LoopBack 4实现了与
@belongsTo()、@hasMany()、@hasOne()等的弱关系。这意味着约束是由LoopBack 4本身执行的,而不是底层数据库引擎。这对于集成跨数据库关系非常有用,从而允许LoopBack 4应用程序部分地扮演数据湖的角色。 但是,这意味着可以在LoopBack 4应用程序之外键入无效数据。为了解决这个问题,一些LoopBack 4连接器(如PostgreSQL和MySQL)允许通过@model()装饰器定义外键约束。请查阅相应的连接器文档以检查兼容性。
斜体字强调的是为什么适用这些限制。
https://stackoverflow.com/questions/65186455
复制相似问题