2017-07-04 2 views
1

Ich habe ein Problem mit Modell und Serializer. Ich habe mir die Dokumentation angeschaut und kann keine Lösung finden. Meine App ist mit einer Django-Rest-API verbunden."str ist undefined" auf findRecord

Django Antwort:

{ 
    "id": 1, 
    "url": "http://localhost:8000/users/1/", 
    "username": "username", 
    "email": "[email protected]", 
    "is_staff": true 
} 

Das Modell:

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

ich die Antwort mit einem Serializer geändert haben "Daten" enthalten:

export default DS.JSONAPISerializer.extend({ 
    primaryKey: 'id', 
    normalizeFindRecordResponse(store, type, payload, id) { 
     console.log('payload',payload) 
     return { 
      data: { 
       'id': id, 
       'url': payload.url, 
       'username': payload.username, 
       'email': payload.email, 
      } 
     } ; 
    } 
}); 

Die Route:

export default Ember.Route.extend({ 
    model() { 
     return this.store.findRecord('users', 1); 
    } 
}); 

Eine andere Version der Route die gleichen Fehler:

export default Ember.Route.extend({ 
    model() { 
     this.store.findRecord('users', '1').then(function(user){ 
      console.log('user', user); 
     }).catch(function(e){ 
      console.log('e', e); 
     }); 
    }  
}); 

Schließlich hat Ember Inspektor das Modell aber alle Werte als undefiniert und „str ist nicht definiert“ auf der Konsole.

Image of ember inspector

Antwort

0

1. normalizeFindRecordResponse ist gültig JSONAPI Format nicht zurückkehrt, Die unterhalb der gültigen Format ist,

{ 
    "data": { 
    "type": "articles", 
    "id": "1", 
    "attributes": { 
     // ... this article's attributes 
    }   
    } 
} 

Wie Sie sehen können, die Sie vermissen type, attributes Schlüssel.

2.Der Modelldateiname sollte user.js im Singular sein.
3. this.store.findRecord('users', 1) - hier müssen Sie singluar Form des Modells verwenden, also this.store.findRecord('user', 1)
4.In Ihrem nächsten Versuch fehlen Sie die Rückgabeanweisung in Modell Hook.

+1

Der erste Punkt löste das Problem. Danke für Ihre Hilfe. – carloscba