实现环回类表继承
Implementing Class Table Inheritance in Loopback
我正在尝试在环回模型中实现子类化,其中我有一个具有公共字段的父表和具有特定字段的父表的子表。
一个实际的例子:
Customer
具有既适用于个人又适用于组织的字段的模型
-
internal_id
-
created
Person
仅包含个人特定字段的模型
-
first_name
-
last_name
Organisation
只有组织特定字段的模型
-
registration_number
-
trade_name
所以基本上Person
继承自Customer
Organisation
也继承自Customer
我遵循这个扩展模型的指南,在 然而,当我创建一个 我假设当我基于另一个模型扩展一个模型时,当保存被扩展模型时,它也会将公共字段保存到父模型中。 情况似乎并非如此。我如何在环回中实现这一点? 如果需要,这里是模型的json:Customer
模型的基础上创建Person
和Organisation
模型Person
,即通过POST
在http://0.0.0:3000/persons
,他被创建在Person
表,而不是在Customer
表。
customer.json
{
"name": "Organisation",
"plural": "Organisations",
"base": "Customer",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"registration_number": {
"type": "string",
"required": true
},
"trade_name": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}
person.json
{
"name": "Person",
"plural": "Persons",
"base": "Customer",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"first_name": {
"type": "string",
"required": true
},
"last_name": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}
organisation.json
{
"name": "Organisation",
"plural": "Organisations",
"base": "Customer",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"registration_number": {
"type": "string",
"required": true
},
"trade_name": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}
Loopback不提供这种类型的继承。模型仅仅是模板,扩展模型只是创建一个新的模板,其中包含从继承模型中获得的属性/方法。
我明白你想抽象客户是个人还是组织。这看起来像是多态关系的典型用例。多态关系允许您将一个模型关联到其他几个模型。
下面是我将如何构建应用程序:In customer.js
{
"name": "Customer",
// ...
"relations": {
"customerable": {
"type": "belongsTo",
"polymorphic": true
}
}, // ...
}
In person.js
{
"name": "Person",
// ...
"relations": {
"customer": {
"type": "hasOne",
"model": "Customer",
"polymorphic": {"as": "customerable", "discriminator": "person"}
}
}, // ...
}
In organization.js
{
"name": "Organization",
// ...
"relations": {
"orders": {
"type": "hasOne",
"model": "Customer",
"polymorphic": {"as": "customerable", "discriminator": "organization"}
}
}, // ...
}
我使用这个例子是因为环回文档不是很清楚
- 在JavaScript中使用对象文字实现继承
- CoffeeScript 中的继承实现
- 在 JavaScript 中实现简单继承
- 使用Google闭包库的正确继承/子类实现剖析
- 如何在 javascript 中实现继承
- 如何实现 JavaScript 对象继承
- 在这种情况下在 JavaScript 中实现继承 [更具体地说是 node.js]
- 如何在 Screeps 对象中实现继承
- 在 AngularJS 指令中实现继承
- 在Javascript中使用寄生继承,是否可以实现内省实例方法
- 这种嵌套命名空间继承模式是否得到了很好的实现
- 用Selfish实现Javascript中的简单继承
- 我怎么能在Backbone中简单地实现类Sencha继承呢
- 使用父对象中的私有变量实现原型继承
- 如何在JavaScript中实现继承
- 我如何在JavaScript中实现这个java模式(使用继承)
- 通过clone()实现对象继承是如何工作的
- Javascript:如果不使用define prototype方法就可以实现继承,为什么还要使用它呢?
- javascript中的经典继承实现
- JS的简单继承实现:这是一个很好的例子吗