使用 Ember 数据保存嵌套模型

Save nested models using Ember Data

我在 Ember 中有两个模型:

Collection

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

});

Collection 项目

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

我想将 collection 项保存在 collection 的 '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。

如果您使用来自 Ember 数据的默认值,您需要有一个 JSON API 兼容的后端服务,从中获取 retrieve/send 数据。如果您还没有后端,可以查看 projects implementing JSON API standards

完成工作后 API,剩下的就相当简单 well documented

您所描述的是 Ember 中的嵌入式记录。在序列化程序页面上,在 JSONAPISerializer 的讨论下方是对嵌入式记录混合的讨论:https://guides.emberjs.com/v2.14.0/models/customizing-serializers/

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

就是说,除非您的后端需求相当简单,否则我建议您在做得太过火之前开始构建一个后端(并为此使用 JSON-API)。 JSON-API 是基于整个 Ember 社区多年来感受到的痛点的规范。如果您现在构建一个更简单的后端,您可能会发现自己在未来遇到 JSON-API 专门设计用于解决的问题。

祝你好运!