我在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
答案 0 :(得分:1)
当您为某个关系get
数据时,它是一个返回诺言的异步代码。请参阅《 Ember.js指南》的这一部分,Relationships as Promises。我怀疑在设置时,由于承诺尚未解决,因此属性记录未定义。
请改用此方法,看看是否有帮助:
res.products.get('meta.attributes').then((records) => {
model.set('attributes', this.store.normalize('attribute', records));
})