我刚刚开始使用Loopback ,并定义了两个应该由简单的多对多关系绑定(bind)的模型。
第一个模型是Customer
,第二个模型是Pet
。
每个客户可以拥有不同的宠物,并且每个宠物可以由不同的客户拥有。
我使用loopback-cli 创建关系,并在 Customer 模型上定义它,并以 Pet 模型作为引用。代码中唯一的变化是:
/* customer.json */
"relations": {
"Pets": {
"type": "hasAndBelongsToMany",
"model": "Pet",
"foreignKey": ""
}
}
在此之后,我找到了一组新的 REST 端点,用于资源的各种操作,例如 /customers/{customerId}/pets
。
如何获得关系的相反“一侧”,就 REST API 而言,该“一侧”为 /pets/{petId}/customers
?
我不想创建新的关系,也不想创建新的模型。我只想重用当前的 MySQL 表 CustomerPet
,它已包含我需要的信息。
提前致谢
最佳答案
处理 hasAndBelongsToMany 关系的正确方法是使用 cli 工具在两个方向上创建它:
- 宠物 hasAndBelongsToMany 客户
- 客户 hasAndBelongsToMany 宠物
这意味着数据库中有两个不同的表:PetCustomer
和 CustomerPet
。
然后,当创建两个实体之间的新关系时,REST api 会自动处理两个表。有两种方法可以做到这一点:
- 创建一个新的相关实体,例如将新宠物发布到
/customers/{:customerId}/pets
- 在两个现有实体之间创建引用,例如通过 PUT(空正文就足够了)到
/customers/{:customerId}/pets/rel/{:petId}
我想复制保存多对多关系的数据库表是拥有像loopback这样灵活且易于使用的工具的代价。
关于node.js - Loopback : many-to-many relation, 无法反向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52020866/