如何处理 EmberJS 客户端中的 many2many 对象?
How to deal with many2many objects in EmberJS client?
我有一个具有多对多关系的数据模型。假设我有一个 Producer
模型和一个 Customer
模块。一个顾客可以从任意数量的生产者那里购买,一个产品可以服务于任意数量的顾客。
在后端,我有三个表的标准关系配置:
- 顾客
- 制作人
- 客户2生产商
我的 Ember 模型目前看起来像这样:
// models/producer.js
import DS from 'ember-data';
export default DS.Model.extend({
customers: DS.hasMany('module'),
});
// models/customer.js
import DS from 'ember-data';
export default DS.Model.extend({
producers: DS.hasMany('module'),
});
现在我正在处理固定装置,我所做的只是用 "targets" 的 ID 定义 customers
和 producers
数组。问题是,我迟早会切换到真正的 REST 后端,这意味着我必须处理模型不匹配问题。我想我必须选择:
定义一个 Ember 模型 customer2producer
。这可能会奏效,但我想我将不得不写很多样板,而且很可能无法从模型中访问这些关系(customer.get('producers')
不会直接工作,我可能不得不玩和在这个问题中做类似的事情:
Many to Many Relationships with Ember, ember-data and Rails
连接到 serializer/deserializer 系统并将后端 customer2producer
对象转换为 Ember 模型引用。我不完全确定这是可能的,但我想说这是通过快速阅读这些 SO 问题:
How to save models with many-to-many relationship in Ember.js?
Saving nested models
我想这是一种非常常见的情况,我想知道解决该问题的最简洁方法是什么。提前致谢。
您的数据库不需要映射到您的 REST API。特别是您没有平面数据的限制(如今在某些数据库中也没有)。
如果您可以控制后端 API,我只会 return 回复:
获取/客户
{
customers: [
{id: 1, producers: [1, 2]},
{id: 2, producers: []},
]
}
获取/生产者
{
producers: [
{id: 1, customers: [1]},
{id: 2, customers: [1]}
]
}
您的 REST 后端应该是关心序列化和反序列化到数据库模型的后端,而不是您的前端应用程序。
如果您有无法立即修改的 API 内容(移动应用程序、第三方等),您的 REST API 自然会与您的后端模型脱节反正时间,给你数据转换工作。所以我真的很想强迫你做对 REST 有意义的事情。
我有一个具有多对多关系的数据模型。假设我有一个 Producer
模型和一个 Customer
模块。一个顾客可以从任意数量的生产者那里购买,一个产品可以服务于任意数量的顾客。
在后端,我有三个表的标准关系配置:
- 顾客
- 制作人
- 客户2生产商
我的 Ember 模型目前看起来像这样:
// models/producer.js
import DS from 'ember-data';
export default DS.Model.extend({
customers: DS.hasMany('module'),
});
// models/customer.js
import DS from 'ember-data';
export default DS.Model.extend({
producers: DS.hasMany('module'),
});
现在我正在处理固定装置,我所做的只是用 "targets" 的 ID 定义 customers
和 producers
数组。问题是,我迟早会切换到真正的 REST 后端,这意味着我必须处理模型不匹配问题。我想我必须选择:
定义一个 Ember 模型
customer2producer
。这可能会奏效,但我想我将不得不写很多样板,而且很可能无法从模型中访问这些关系(customer.get('producers')
不会直接工作,我可能不得不玩和在这个问题中做类似的事情:Many to Many Relationships with Ember, ember-data and Rails
连接到 serializer/deserializer 系统并将后端
customer2producer
对象转换为 Ember 模型引用。我不完全确定这是可能的,但我想说这是通过快速阅读这些 SO 问题:How to save models with many-to-many relationship in Ember.js?
Saving nested models
我想这是一种非常常见的情况,我想知道解决该问题的最简洁方法是什么。提前致谢。
您的数据库不需要映射到您的 REST API。特别是您没有平面数据的限制(如今在某些数据库中也没有)。
如果您可以控制后端 API,我只会 return 回复:
获取/客户
{
customers: [
{id: 1, producers: [1, 2]},
{id: 2, producers: []},
]
}
获取/生产者
{
producers: [
{id: 1, customers: [1]},
{id: 2, customers: [1]}
]
}
您的 REST 后端应该是关心序列化和反序列化到数据库模型的后端,而不是您的前端应用程序。
如果您有无法立即修改的 API 内容(移动应用程序、第三方等),您的 REST API 自然会与您的后端模型脱节反正时间,给你数据转换工作。所以我真的很想强迫你做对 REST 有意义的事情。