如何规范化ember.js中的数据

如何规范化ember.js中的数据,ember.js,ember-data,Ember.js,Ember Data,我在meta部分中有相关数据属性-->值 pushPayload工作正常 this.store.pushPayload(res.products.get('meta.attributes')) 但我只需要将新数据推送到模型中,所以我尝试规范化: model.set('attributes', this.store.normalize('attribute', res.products.get('meta.attributes'))); 在正常化过程中,我遇到错误: string.js:63 U

我在
meta
部分中有相关数据
属性-->

pushPayload
工作正常

this.store.pushPayload(res.products.get('meta.attributes'))

但我只需要将新数据推送到模型中,所以我尝试规范化:

model.set('attributes', this.store.normalize('attribute', res.products.get('meta.attributes')));
在正常化过程中,我遇到错误:

string.js:63 Uncaught TypeError: Cannot read property 'replace' of undefined
    at Cache.func (string.js:63)
    at Cache.get (ember-metal.js:2611)
    at decamelize (string.js:100)
    at Cache.func (string.js:11)
    at Cache.get (ember-metal.js:2611)
    at Object.dasherize (string.js:104)
    at normalizeModelName (-private.js:560)
    at Class.modelNameFromPayloadKey (json-api.js:352)
    at Class._extractType (json-api.js:338)
    at Class.normalize (json-api.js:379)
那么这里的错误是什么呢?我不想在
meta.attributes
上编写循环并使用
peekRecord


codesandbox示例

当您获取关系的数据时,返回承诺的是异步代码。请参阅Ember.js指南的这一部分。我怀疑在设置时,属性记录是未定义的,因为承诺尚未解决

试试这个,看看是否有帮助:

res.products.get('meta.attributes').then((records) => {
   model.set('attributes', this.store.normalize('attribute', records));
})

我得到错误:
TypeError:products.get(…)。then不是一个函数
。res-只是一个带有键
data
meta
的对象。元包含:
属性。数据
属性。包含
。因此,我尝试规范化
meta.attributes
中的数据。很遗憾,这仍然不适用于您@Ivanov。请将您的模型和示例响应json添加到您的问题中,或者创建一个显示此错误的Ember Twiddle/codesandbox,这样我们可以更好地帮助您该问题仍然是实际的,可能需要添加一些额外的数据以便更好地理解