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
at
http://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/订单/客户
,并获取所有通过订单的人员和组织。我将编辑我的回答您可以复制它们或构建一个特定的模型来存储它们,然后添加一个关系
个人
哈桑
公共物品
组织
哈桑
公共物品