Я пытаюсь загрузить данные с RESTAPISerializer, но, похоже, есть некоторые проблемы.Ember - Данные о загрузке в RESTAPISerializer
Целью является хранить статьи с тегами. Статьи появляются в магазине просто прекрасно, и я могу посмотреть на них с инспектором Эмбера. Но я не могу понять, как хранить теги, они никогда не появляются в инспекторе.
Я создал модель, называемую блога-тегом для хранения тегов. Они приходят в определенном формате, который я не могу изменить, и это выглядит следующим образом:
tid:term
... и я получаю массив из них с каждой статьей.
Модель статьи включает в себя отношения hasMany с блогами-тегами. Я пытаюсь передать их через сериализатор и использовал различные форматы (JSON, массивы javascript и т. Д.). Я написал собственный сериализатор для тегов блога, но, похоже, он мало что делает.
Может ли кто-нибудь объяснить, что мне не хватает?
В статье модель:
import DS from 'ember-data';
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
export default Model.extend({
title: attr(),
blogTags: hasMany('blog-tag', { async: true })
});
блог-тег модель:
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
export default Model.extend({
tid: attr('number'),
term: attr('string'),
});
В статье сериализатору:
import RESTAPISerializer from 'ember-data/serializers/rest';
export default RESTAPISerializer.extend({
normalizeResponse: function(store, primaryModelClass, payload, id, requestType) {
var normalizedPayload = {articles: []};
payload.forEach(function(item) {
var tags = item.tags.split("|"), blogTags = [];
// storing blog tags in an array, have also done it as a
// JSON structure
var blogTags = tags.map((tag) => {
var item = tag.split(":"),
vals = {};
vals.tid = item[0];
vals.term = item[1];
return vals;
});
var article = {
id: item.nid,
title: item.title,
blogTags: blogTags,
};
normalizedPayload.articles.push(article);
});
return this._super(store, primaryModelClass, normalizedPayload, id, requestType);
},
});