Javascript 在环回中实现类表继承
我试图在环回模型中实现子分类,其中我有一个带有公共字段的父表,以及作为带有特定字段的父表的子表 一个实际例子:Javascript 在环回中实现类表继承,javascript,inheritance,loopbackjs,Javascript,Inheritance,Loopbackjs,我试图在环回模型中实现子分类,其中我有一个带有公共字段的父表,以及作为带有特定字段的父表的子表 一个实际例子: 客户 具有同时适用于个人和组织的字段的模型 internal\u id 已创建 Person 仅包含个人特定字段的模型 名字 姓氏 组织机构 仅包含组织特定字段的模型 注册号 trade\u name 因此基本上,个人继承自客户,而组织也继承自客户 我已经按照本指南创建了基于客户模型的人员和组织模型 但是,当我创建一个人时,即通过POSTathttp://0.0.0:30
客户
具有同时适用于个人和组织的字段的模型
internal\u id
已创建
Person
仅包含个人特定字段的模型
名字
姓氏
组织机构
仅包含组织特定字段的模型
注册号
trade\u name
因此基本上,
个人
继承自客户
,而组织
也继承自客户
我已经按照本指南创建了基于客户
模型的人员
和组织
模型
但是,当我创建一个人时,即通过POST
athttp://0.0.0:3000/persons
,他是在Person
表中创建的,但不是在Customer
表中创建的
我假设,当我基于另一个模型扩展模型时,在保存extendee模型时,它也会将公共字段保存到父模型中
事实似乎并非如此。如何在环回中实现这一点
如果需要,以下是模型JSON:
customer.json
person.json
organization.json
环回不提供这种类型的继承。模型只是模板,扩展模型只需使用从继承模型获得的属性/方法创建一个新模板
我知道您想要抽象出客户是个人还是组织。这看起来像是一个典型的用例。多态关系允许您将一个模型与多个其他模型关联起来
下面是我将如何构造应用程序:
在customer.js中
{
"name": "Customer",
// ...
"relations": {
"customerable": {
"type": "belongsTo",
"polymorphic": true
}
}, // ...
}
{
"name": "Person",
// ...
"relations": {
"customer": {
"type": "hasOne",
"model": "Customer",
"polymorphic": {"as": "customerable", "discriminator": "person"}
}
}, // ...
}
{
"name": "Organization",
// ...
"relations": {
"orders": {
"type": "hasOne",
"model": "Customer",
"polymorphic": {"as": "customerable", "discriminator": "organization"}
}
}, // ...
}
在person.js中
{
"name": "Customer",
// ...
"relations": {
"customerable": {
"type": "belongsTo",
"polymorphic": true
}
}, // ...
}
{
"name": "Person",
// ...
"relations": {
"customer": {
"type": "hasOne",
"model": "Customer",
"polymorphic": {"as": "customerable", "discriminator": "person"}
}
}, // ...
}
{
"name": "Organization",
// ...
"relations": {
"orders": {
"type": "hasOne",
"model": "Customer",
"polymorphic": {"as": "customerable", "discriminator": "organization"}
}
}, // ...
}
在organization.js中
{
"name": "Customer",
// ...
"relations": {
"customerable": {
"type": "belongsTo",
"polymorphic": true
}
}, // ...
}
{
"name": "Person",
// ...
"relations": {
"customer": {
"type": "hasOne",
"model": "Customer",
"polymorphic": {"as": "customerable", "discriminator": "person"}
}
}, // ...
}
{
"name": "Organization",
// ...
"relations": {
"orders": {
"type": "hasOne",
"model": "Customer",
"polymorphic": {"as": "customerable", "discriminator": "organization"}
}
}, // ...
}
我之所以使用,是因为环回文档不是很清楚谢谢-我没有订单
型号-你是说客户
?不,我的意思是订单
存储你的订单、销售。在我看来,您应该删除客户模型,因为它更多地代表订单和客户之间的关系。IMO您应该删除客户模型,因为它更多地代表订单和客户之间的关系
——那么人员
和组织
之间常见的字段会发生什么情况?在每个模型中复制它们?另外,你的订单模型让我很困惑——我在allI系统的任何部分都没有也不会有订单,我称之为多态关系orderable
,但这不是一个明智的选择。最好的名字实际上应该是客户
,因为这样做可以获取api/订单/客户
,并获取所有通过订单的人员和组织。我将编辑我的回答您可以复制它们或构建一个特定的模型来存储它们,然后添加一个关系个人哈桑公共物品和组织哈桑公共物品。