2017-06-12 3 views
0

Ich versuche eine Eins-zu-Eins-Beziehung zwischen einem Konto und einem Benutzermodell in Ember zu erstellen. Beim Erstellen des Modells erhalte ich den FehlerFehler beim Versuch, eine Eins-zu-Eins-Beziehung in ember.js zu erstellen

Sie können eine ModelClass nicht mehr als erstes Argument an store.buildInternalModel übergeben. Übergeben Sie stattdessen modelName. Fehler

meine Modelle:

import DS from 'ember-data'; 

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


import DS from 'ember-data'; 

export default DS.Model.extend({ 
    user_name: DS.attr('string'), 
    content_type: DS.attr('string'), 
    creator: DS.attr('boolean'), 
    user: DS.belongsTo('user') 
}); 

die Kontoerstellung Aktion in Routen/create-account.js:

createAccount (params) { 
     let current_user = this.get('auth.credentials.id'); 
     let account = this.get('store').createRecord('account', params); 
     account.set('user', user); 
     account.save(); 
    }, 

Ich habe keine Ahnung, was dieser Fehler bedeutet, oder, wie man arbeitet um es herum. Was noch schlimmer ist, ist, dass mein Code dem entspricht, was in den Ember-Dokumenten festgelegt ist. Ich bin auch in der Lage, in meine Backend-Datenbank zu schreiben, selbst mit diesem kaputten Code. Hat jemand diesen Fehler vor erfahren/wissen, wie man es löst?

+0

Dieses Problem scheint mit Ihrem Serializer zu sein. können Sie versuchen, {user: {embedded: 'always'}} für das Konto – Gautam

+0

Wie würde dieses Update aussehen/wo würde ich es platzieren? – d00medman

Antwort

0

Dies ist wahrscheinlich, weil Sie die account setzen ‚s user als ID für die user und kein user Modellobjekt. Ihre Aktion sollte wahrscheinlich refaktorisiert werden, um ein user Modellobjekt abzurufen und dann auf account zu setzen. Etwas wie folgt aus:

createAccount(params) { 
    const store = this.get('store'); 
    const currentUserId = this.get('auth.credentials.id'); 
    store.findRecord('user', currentUserId).then((user) => { 
     params['user'] = user; 
     store.createRecord('account', params).save(); 
    }); 
} 

Natürlich ist dies vereinfacht werden könnte, wenn der auth Service als auch ein Referenzmodell für die eingeloggte user bieten könnte.

Verwandte Themen