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

What is the Ember way of converting retrieved Ember Data records into plain objects?

本文关键字:Ember 对象 方式 是什么 转换 检索 数据 记录      更新时间:2023-09-26

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

一切看起来都很好。

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

我看了一页又一页的相关材料,但我找不到任何通用的方法来做这件事。我很确定有一个,因为这似乎是一个非常基本的用例,所以我没有想要重新发明轮子,重新写一遍。

烬有这样的设施吗?我怎么能获得一个简单的数组与纯JavaScript对象(只是哈希,我的意思是)从这个RecordArray我得到了?

当然,我可以做JSON.parse(JSON.stringify(recordArray));,但对于大型对象,似乎不太性能这么多的转换。我想知道Ember是否提供了一种更直接(性能更好)的方法来做到这一点。

谢谢!

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

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;
}