将检索到的Ember Data记录转换为普通对象的Ember方法是什么?

时间:2014-06-05 19:47:26

标签: javascript ember.js

我使用var items = store.find('model');检索了一系列记录。返回的对象是RecordArray的一个实例,包含几个条目,每个条目都有一个Ember对象,允许我在记录中获取和设置属性。

一切看起来都不错。

现在我需要将返回的对象提供给第三方库,当然我不能发送Ember对象,因为它需要普通对象。

我查看了相关材料的页面和页面,但我找不到任何通用的方法。我很确定有一个,因为这似乎是一个非常基本的用例,所以我不知道 想要重新发明轮子并再次写下来。

Ember有设施吗?如何从我得到的RecordArray获得一个简单的数组,其中包含普通的JavaScript对象(我的意思是哈希)?

更新

当然,我可以JSON.parse(JSON.stringify(recordArray));,但是对于那些看起来效果太差的大型物品而言,这么多转换都是如此。我想知道Ember是否提供了一种更直接的方式(性能更好)。

谢谢!

1 个答案:

答案 0 :(得分:2)

据我所知,没有ObjectSerializer,所以最简单的方法就是使用JSONSerializer并使用JSON.parse从中创建对象。

items.map(function(e){
  return JSON.parse(e.toJSON());
});

但是,您可以手动编写序列化逻辑。

function serializeToObject(model){
  var fields = Ember.get(model.constructor, 'fields');
  obj = {};
  fields.forEach(function(fieldName, kindOfField){
    obj[fieldName] = model.get(fieldName);
  });
  return obj;
}