我的数组数据类型不适用于Ember数据

时间:2015-12-02 15:16:53

标签: ember.js ember-data

上下文:我正在使用Ember frontend + Rails API构建配方应用程序。在我的后端配方模型中,我存储了一个image_urls数组(以及一些其他数据作为字符串)。 Ember数据很乐意将字符串添加到商店,但当然无法处理开箱即用的“数组”数据类型。我创建了一个数组变换来尝试绕过它,但我认为我的变换甚至不被调用。无论如何,我的imageUrl数据属性返回为undefined。

这是项目的样子:

//食谱模型

import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string'),
  cookTime: DS.attr('string'),
  yield: DS.attr('string'),
  servings: DS.attr('string'),
  imageUrls: DS.attr('array'),

  ingredients: DS.hasMany('ingredient'),

});

// Transforms / array.js

import DS from 'ember-data';

export default DS.Transform.extend({
  deserialize: function(serialized) {
    return (Ember.typeOf(serialized) == "array") ? serialized : [];
  },

  serialize: function(deserialized) {
    var type = Ember.typeOf(deserialized);
    if (type == 'array') {
        return deserialized
    } else if (type == 'string') {
        return deserialized.split(',').map(function(item) {
          return jQuery.trim(item);
        });
    } else {
      return [];
    }
  }
});

这就是JSON的样子:

recipes: [{id: 14, name: "laudantium reprehenderit est", cook_time: "166 minutes", image_urls: ["http://s.iamafoodblog.com/wp-content/uploads/2015/10/meatlovers-pizza-9.jpg",…]},...]

我知道Ember并不容易违反惯例,但我仍然希望这种方法有效。另一种方法是将image_urls作为关系数据发送,这样我就可以在我的配方和图像之间创建一个hasMany关系,但这似乎也不太合适。关于我的代码有什么问题或者解决这个问题的其他方法的任何想法?

1 个答案:

答案 0 :(得分:0)

啊哈!问题不在于数组,而在于我的序列化程序处理下划线的方式