上下文:我正在使用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关系,但这似乎也不太合适。关于我的代码有什么问题或者解决这个问题的其他方法的任何想法?
答案 0 :(得分:0)
啊哈!问题不在于数组,而在于我的序列化程序处理下划线的方式