HasMany - принадлежит RESTAdapter Ember.js

Попытка создать имеет много принадлежит RESTAdapter. По сути, у меня есть карточка (твиттер), в которой много хэштегов. Я использую Ember-Cli.

Мои модели:

//models/card.js
import DS from 'ember-data';

export default DS.Model.extend({
    handle: DS.attr('string'),
    bio: DS.attr('string'),
    avatar: DS.attr('string'),
    hashtags: DS.hasMany('hashtag')
});


//models/hashtag.js
import DS from 'ember-data';

export default DS.Model.extend({
    title: DS.attr('string'),
    print: DS.attr('boolean'),
    card: DS.belongsTo('card')
});

Маршрут моей карты

import Ember from 'ember';

export default Ember.Route.extend({
    model: function(){
        return this.store.createRecord('card');
    },

    actions: {
        submitHandle: function () {
            var card = (this.currentModel);
            var store = this.store;
            var hashtag = store.createRecord('hashtag');

            card.set("bio", "testbio");
            card.set("avatar", "twitter.com/129012931/img_original.jpg");

            hashtag.set("title", "EmberJS");
            hashtag.set("print", false);
            hashtag.set("card", card);

            card.get('hashtags').addObject(hashtag);

            card.save();
        }
    }
});

В моем маршруте, когда пользователь вводит имя в твиттере, я создаю фиктивную карту и хэштег. Я добавляю хэштегом к хэштегам карт. До сего момента все работает отлично. Если я не вызываю card.save(), карта и хэштег связаны, как и ожидалось. Когда я звоню.save (), запрос отправляется:

card: {handle: "@testing123", bio: "testbio", avatar: "twitter.com/129012931/img_original.jpg"}

Нет упоминания о хэштеге.

Я использую паруса для серверной части, которая, кажется, сохраняет все, что указано в запросе.

Если я попробую что-то вроде: hashtag.save(). Then(function () { card.save() });

Что я и попробовал, потому что подумал, что мне может понадобиться идентификатор с сервера для хэштега, прежде чем Эмбер сможет связать его с картой. Запрос хештега выглядит следующим образом:

{"hashtag":{"title":"EmberJS","print":false,"card":null}}

И запрос карты:

{"card":{"handle":"@wiolsid","bio":"testbio","avatar":"twitter.com/129012931/img_original.jpg"}}

1 ответ

Пара соображений новичка.

  1. Попробуйте создать хэштегом вот так:

    var hashtag = store.createRecord('hashtag', {card: card});
    

    Тогда вам не нужно card.get('hashtags').addObject(hashtag);,

  2. Сохраните дочернюю модель перед сохранением родительской модели.

Вот скрипка, которую я создал, чтобы попробовать подобную задачу:

Другие вопросы по тегам