Как нормализовать данные в ember.js - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть связанные данные 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 голосов
/ 23 декабря 2018

Когда вы get данные для отношения, это асинхронный код, который возвращает обещание.См. Этот раздел Руководств Ember.js, Отношения как обещания .Я подозреваю, что во время набора записи атрибутов не определены, потому что обещание не разрешено.

Попробуйте вместо этого попробовать и посмотрите, поможет ли это:

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