2016-07-10 2 views
2

расслоения плотной приложение/модель/card.jshasMany объединения в Ember

export default Model.extend({ 
    title: attr('string'), 
    description: attr('string'), 
    users: hasMany('user') 
}); 

приложения/модель/user.js

export default Model.extend({ 
    email: attr('string'), 
    name: attr('string') 
}); 

приложения/маршруты/карта/new.js

actions: { 
    save(title, description) { 
    const newCard = this.get('store').createRecord('card', { 
     title, 
     description 
    }); 

    this.get('store').findRecord('user', 1).then(function(user) { 
     newCard.set('users', user); 
     console.log(newCard); 
    }); 

    newCard.save().then((card) => { 
     // go to the new item's route after creating it. 
     this.transitionTo('card.card', card); 
    }); 
    } 
} 

Таким образом, когда я сохраняю card, он бросает мне эту ошибку:

Assertion Failed: You must pass an array of records to set a hasMany relationship.

Я хочу создать связь между созданным card и user.

Дополнительная информация:

Repo ссылка: https://github.com/ghoshnirmalya/hub-client

Ember: 2.6.1

Ember данных: 2.6.1

ответ

1

Вы определили, что карта имеет много пользователей:

users: hasMany('user') 

Таким образом, вы можете настроим «пользователей» для одного пользователя:

newCard.set('users', user); 

Таким образом, можно либо изменить hasMany к belongsTo, или установить «пользователей» вместо того, чтобы только один user на массив пользователей : [user]

+0

Это просто отправьте этот ответ '{" data ": {" attributes ": {" title ":" sad "," description ":" asdasd "}," relationship ": {" users ": {"data": []}}, "type": "cards"}} 'где' users.data' - пустой массив. Мои бэкэнд ожидает, что 'users.data' будет чем-то вроде' [1, 2, 3] 'или даже' [1] '. –

+2

Как 'findRecord()' async ваш 'newCard.save()' может срабатывать, прежде чем устанавливать связь. Попробуйте переместить сохранение в обещание. – donleche

Смежные вопросы