ember-data模型没有被序列化为不同的主机

时间:2014-11-26 18:14:20

标签: ember.js ember-data

Ember 1.7.0 Ember Data 1.0.0 - beta 10

我有一个从不同的rails服务器获取数据的产品模型 我的适配器是

import DS from 'ember-data';
export default DS.RESTAdapter.extend({
    namespace: 'api/v1'
});

和产品

import ApplicationAdapter from './application';
import DS from 'ember-data';
export default DS.RESTAdapter.extend({
    namespace: 'api/v1',
    host: 'http://localhost:4000' 
});

我的产品型号是

import DS from 'ember-data';

export default DS.Model.extend({
  itemId: DS.attr('string'), //this is NOT a primary key 
  title: DS.attr('string'),
  thumbnailUrl: DS.attr('string'),
  categories: DS.attr('string'),
  currency: DS.attr('string'),
  price: DS.attr('number'),
  productUrl: DS.attr('string'),
  pictureUrl: DS.attr('string')
});

我的其他rails服务器的json响应是

{
    "products": [{
        "id": "1",
        "item_id": "310351720028",
        "title": "some cool title",
        "thumbnail_url": "http://mythumbnail.url",
        "categories": "abc",
        "currency": "$",
        "price": "6900.0",
        "product_url": "some url",
        "picture_url": "hereis m"
    }, {
        "id": "2",
        "item_id": "221588471947",
        "title": "Title 1",
        "thumbnail_url": "http://mythubnail",
        "categories": "def",
        "currency": "$",
        "price": "449.0",
        "product_url": "someurl",
        "picture_url": "someurl"
    }]
}

带有蛇案例的属性:_不显示它们是未定义的示例item_id,thumbnail_url。

我尝试使用ember g serializer Product

制作一个serailizer
import DS from 'ember-data';
import Ember from 'ember';
export default DS.RESTSerializer.extend({
    keyForAttribute: function(attr) {
        return Ember.String.camelize(attr);
    }
});

//当我做一个console.log(Ember.String.camelize(attr))时,我发现蛇案已经转换为camelCase。 我没有产品路线

但没有运气......

更新:

根据@chrism_的irc解决方案,这应该适用于RESTAdapter http://jsbin.com/ripaqe/3/edit?html,js,output

1 个答案:

答案 0 :(得分:2)

因为您使用带有snake_case的JSON,而不是使用DS.RESTSerializer使用DS.ActiveModelSerializer。它专为这种情况而设计,它将为您节省工作。

请参阅:http://emberjs.com/api/data/classes/DS.ActiveModelSerializer.html