2016-04-27 8 views
0

Ich habe Probleme beim Laden einer belongsTo Beziehung - keine Fehler werden angezeigt und keine Anfragen gesendet. Die Benutzeroberfläche bleibt einfach leer. Bei folgenden Modellen:Fehler beim Laden von Relationen in Ember 2

project.js DS aus 'ember-data' importieren;

export default DS.Model.extend({ 
    name: DS.attr(), 
    items: DS.hasMany('line-item', {async: true}), 
    customer: DS.belongsTo('customer', {async: false}) 
}); 

customer.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    name: DS.attr(), 
    email: DS.attr(), 
    projects: DS.hasMany('project', {async: true}) 
}); 

Die Beziehung zwischen Projekt und Kunde existiert. Wenn die Projekte Endpunkt zugreifen, wird das Projekt korrekt zurückgegeben:

{ 
    "data":{ 
     "type":"projects", 
     "id":"3861b834-e270-4296-b7be-9aca55676874", 
     "attributes":{ 
     "created":"2016-04-27T22:36:01.061349Z", 
     "modified":"2016-04-27T22:36:01.061477Z", 
     "name":"Sample name", 
     }, 
     "relationships":{ 
     "customer":{ 
      "data":{ 
       "type":"customers", 
       "id":"9242bd41-6bb0-41ed-b5f3-21df26486d9e" 
      } 
     }, 
     "items":{ 
      "meta":{ 
       "count":0 
      }, 
      "data":[ 

      ] 
     } 
     } 
    } 
} 

jedoch, wenn der Kunde den Zugriff versuchen, geschieht nichts (mit nichts meine ich: keine Konsolenausgabe, keine Anforderung an den Kunden Endpunkt usw. Die Benutzeroberfläche einfach lädt nicht):

this.get('project').get('customer'); 

Der Zugriff auf andere Attribute funktioniert (einschließlich der Elemente des Projekts).

Irgendeine Idee, wo ich falsch liege?

+0

Aufruf Ich glaube, da die Beziehung async ist, dann wird die get ein Versprechen zurück. 'project.get ('Kunde'). Dann ((Kunde) => { // Jetzt können wir mit dem Kunden arbeiten });' – snewcomer

+0

Danke snew. Leider funktioniert das nicht - das Problem scheint "project.get ('customer')" zu sein - hier schlägt es fehl. – JB2

+0

Ist der Rückgabewert undefiniert oder eigentlich etwas? – snewcomer

Antwort

2

In Ihrem project Modell definierten Sie customer als async: false, was bedeutet, dass es beim Laden der Projekte von Ihrem Server zur Verfügung gestellt werden sollte. Von der von Ihnen bereitgestellten json-Ausgabe fehlen die Kundendaten.

So umfassen entweder die customer Aufzeichnung, wenn die json vom Server zurückkehrt oder Kunden machen async: true, so wird es geladen werden, wenn project.get('customer')