如何规范ember.js中的数据

时间:2018-12-23 12:54:02

标签: ember.js ember-data

我在Attribute部分有相关数据Values-> 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.io/s/n5l1xw656l

1 个答案:

答案 0 :(得分:1)

当您为某个关系get数据时,它是一个返回诺言的异步代码。请参阅《 Ember.js指南》的这一部分,Relationships as Promises。我怀疑在设置时,由于承诺尚未解决,因此属性记录未定义。

请改用此方法,看看是否有帮助:

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