2016-03-22 15 views
9

Ember’de yeniyim ve sorunumda herhangi bir çözüm bulamıyorum. Buradaki soruları yığın halinde ve diğer forumlarda okudum, ama hiçbiri benim için işe yaramıyor.Onaylama Başarısız Oldu: "İtme" seçeneğine iletilen bir nesnede hesap için bir 'id' eklemeniz gerekir. Ember.js v-2.4

Basit bir kayıt formu oluşturmaya çalışıyorum. Arka uç için django kullanıyorum. İşte benim kodudur:

Sunucu Yanıtı:

[{"username":"user1","password":"123","email":"[email protected]"},   
{"username":"user2","password":"456","email":"[email protected]"}] 

Kor Modeli:

import DS from 'ember-data'; 

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

Kor Adaptörü: 'kor-data' dan ithalat DS;

export default DS.RESTAdapter.extend({ 
    host: '/api', 
    contentType: 'application/json', 
    dataType: 'json', 

    headers: { 
     username: 'XXXX', 
     password: 'XXXX' 
    } 
}); 

Kor serileştiricisi:

import DS from 'ember-data'; 

export default DS.JSONSerializer.extend({ 
    primaryKey: '_id' 
}); 

Kor Rota: 'kor' dan ithalat Kor;

export default Ember.Route.extend({ 
    model() { 
     return this.store.findAll('account'); 
    } 
}); 

Kor Denetleyici: Bu uygulamayla

import Ember from 'ember'; 

export default Ember.Controller.extend({ 

    actions: { 

    signup(){ 
     console.log('My username is: ', this.get('username')); 
     console.log('My password is: ', this.get('password')); 
     console.log('My email is: ', this.get('email')); 

     var account = this.store.createRecord('account', { 
       username: this.get('username'), 
       password: this.get('password'), 
       email: this.get('email') 
     }); 

     account.save(); 

    } 
    } 
}); 

ben yukarıda belirtilen hata alıyorum. Herhangi bir yardım takdir edilecektir. Şimdiden teşekkür ederim. Sizin arka uç bir kimliğe sahip yanıt vermelidir

cevap

12

, yani

{"id":123,"username":"user1","password":"123","email":"[email protected]"} 

Gerçekten belirli bir alan, bir kimliği olarak hareket etmek istemedikçe, seri hale kullanmaya gerek yoktur. Yukarıdaki örnekte Yani, kor-veri arka uç

{**"_id":123**,"username":"user1","password":"123","email":"[email protected]"} 

dönmek beklenir Yoksa böyle bir şey yapabileceğini:

import DS from 'ember-data'; 

export default DS.JSONSerializer.extend({ 
    primaryKey: 'username' 
}); 

Ve kimliğiyle adınızı kullanın.

+0

Çok teşekkür ederim, ben sadece sunucu bir kimliğiyle kullanılarak ne çözemedim. – Jack

3

Hatanımı giderdim. Sorun, arka ucun kullanıcı adını id olarak kullanmasıydı, bu yüzden imdat onu tanıyamadı.

Kor Serializer için sabit kodudur: Cevabınız Igor için

import DS from 'ember-data'; 

export default DS.JSONSerializer.extend({ 
    primaryKey: 'username' 
});