0

几天来,我一直在尝试使用 ember 数据。问题是我拥有的 api 与想要接收的结构 ember-data 不匹配。

物品:

{
    "data": {
        "id": 1,
        "username": "rodzzlessa",
        "slug": "rodzzlessa"
     }
}

收藏:

{
"data": [
    {
        "id": 34,
        "name": "HDG common nails 50lbs",
        "slug": "hdg-common-nails-50lbs4569",
        "description": "Accusantium ipsam impedit omnis sint dolorum.",
        "image_src": "nail-box-angle.png",
        "categories": {
            "data": [
                {
                     "id": 2,
                     "name": "nails",
                    "image_src": "nails-icon.png"
                }
             ]
         }
     }
  ]
}

从我所见,我需要修改 extractSingle 和 extractArray 方法。确实没有在线资源显示这些方法的实际作用以及如何修改它们。我查看了 ember-data api 指南,但该示例非常具体,而且它不是应用程序序列化程序,因此他们解决的问题似乎更容易。我试图找到一本 ember-data 书籍,但它们还不存在。有任何在线资源可以帮助我吗?

/***** 到目前为止更新 ******/

所以我能够创建一个应用程序序列化程序来处理集合和项目:

export default DS.RESTSerializer.extend({

    extractArray: function(store, typeClass, payload) {
        var root_key = Ember.Inflector.inflector.pluralize(typeClass.typeKey);

        payload[root_key] = payload.data;
        delete payload.data;

        return this._super(store, typeClass, payload);
    },

    extractSingle: function(store, typeClass, payload, id){
        var root_key = typeClass.typeKey;

        payload[root_key] = payload.data;
        delete payload.data;

        return this._super(store, typeClass, payload, id);
    }
});

现在我唯一的问题是处理我开始使用 normalize 方法处理的关系,这就是我到目前为止所拥有的:

normalize: function(typeClass, hash, prop){
        self = this;

        typeClass.eachRelationship(function(key, relationship){
            if(relationship.kind === "hasMany"){
                if( ! hash[key]){
                    return hash;
                }

                var hashed = hash[key].data;

                hash[key] = hashed;

                return hashed;
            }
        });

        return this._super(typeClass, hash, prop);
    }

现在我从 ember-data 得到的错误是这样的:

Assertion Failed: Ember Data expected a number or string to represent the record(s) in the `categories` relationship instead it found an object
4

0 回答 0