使用Ember Data保存嵌套模型

时间:2017-07-27 14:29:58

标签: ember.js ember-data

我在Ember有两个模特:

集合

export default DS.Model.extend({
    name: DS.attr(),
    description: DS.attr(),
    items: DS.hasMany('collection-item')

});

收藏品

export default DS.Model.extend({
    date: DS.attr(),
    volume: DS.attr(),
    sequenceNumber: DS.attr()
});

我想将集合项保存在集合的'items'属性中,如MongoDB:

[{
    "name": "First Collection",
    "description": "This is my first collection",
    "items": [
        {
            "date": "2017-07-26",
            "volume": "1",
            "sequenceNumber": "1"
        },
        {
            "date": "2017-07-27",
            "volume": "1",
            "sequenceNumber": "2"
        }
    ]
},
{
    "name": "Second Collection",
    "description": "This is my second collection",
    "items": [
        {
            "date": "2017-07-26",
            "volume": "1",
            "sequenceNumber": "1"
        },
        {
            "date": "2017-07-27",
            "volume": "1",
            "sequenceNumber": "2"
        }
    ]
}]

我已经阅读过有关序列化程序的内容,但我不明白这一点;)有人可以给我一个提示吗?

顺便说一下,我现在正在使用Firebase(emberfire),但我将来会建立自己的API。

2 个答案:

答案 0 :(得分:1)

你所描述的内容被称为Ember中的嵌入式记录。在序列化程序页面上,JSONAPISerializer的讨论下面讨论了嵌入式记录混合:https://guides.emberjs.com/v2.14.0/models/customizing-serializers/

您可以使用带有嵌入式mixin的RESTSerializer来实现您的目标。

尽管如此,除非您的后端需求相当简单,否则我建议您在开始之前开始构建后端(并使用JSON-API)。 JSON-API是基于多年来整个Ember社区所感受到的痛点的规范。如果您现在构建一个更简单的后端,您可能会发现JSON-API将来会遇到令您头疼的问题。

祝你好运!

答案 1 :(得分:0)

如果您使用的是Ember Data的默认值,则需要有一个JSON API兼容的后端服务,从中检索/发送数据。如果您还没有后端,可以查看projects implementing JSON API standards

拥有一个正常工作的API之后,剩下的就相当简单了well documented