繁体   English   中英

如何从余烬数据存储中提取标准化数据?

[英]How to extract normalized data from the ember-data store?

我正在将余烬数据存储缓存到本地存储中。 第一次加载时,我查询服务器将数据加载到存储中,然后将其加载到本地存储中。 在后续页面加载中,我从本地存储中提取数据并将其加载到存储中。 我可以使用pushMany方法执行此操作。

商店的pushMany方法需要规范化的数据。 通过将服务器的有效负载通过模型序列化器来对其进行标准化。 一旦标准化数据存储在存储中,似乎有理由相信应该有可能将标准化数据取出。

那么,如何从存储中提取规范化数据呢?

每个模型上都有一个_data属性。 '_data'属性仅适用于平面模型。 更复杂的模型_data属性包含实例化的关系。

我想避免多次进行序列化/反序列化。

是我当前的实现。 toJson方法的问题在于它必须加载所有尚未解决的关联,包括异步关系。 我认为关于余烬数据如何解析关系主/外键存在一个基本问题。

对于您的问题的一个很好的起点可以是从ember-data实现toJSON

如您所述,toJSON的问题在于它正在解决所有关联。 对于belongsTo关系,使用_data获取相关对象的ID可以轻松避免此问题。

 customToJSON: function(record) { var json = {}; json.id = record.get('id'); var serializer = DS.JSONSerializer.create({ container: record.container }); record.eachAttribute(function(key, attribute) { serializer.serializeAttribute(record, json, key, attribute); }, this); record.eachRelationship(function(key, relationship) { if (relationship.kind === 'belongsTo') { json[relationship.key] = record._data[relationship.key].id; } }); return json; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM