2016-03-22 4 views
9

Emberを初めて利用しています。私はスタックと他のemberフォーラムでここで質問を読んだが、それらのどれも私のために働くようには見えない。アサーションに失敗しました: 'push'に渡されたオブジェクトにアカウントの 'id'を含める必要がありますEmber.js v-2.4

私は簡単なサインアップフォームを作成しようとしています。私はバックエンドのために私はdjangoを使用することに注意する必要があります。 は、ここに私のコードです:

サーバーの応答:

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

エンバーモデル:

import DS from 'ember-data'; 

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

エンバーアダプタ: 'エンバー・データ' から 輸入DS;

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

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

エンバーシリアライザ:

import DS from 'ember-data'; 

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

エンバールート: 'エンバー' から 輸入エンバー。

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

エンバーコントローラー:

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(); 

    } 
    } 
}); 

この実装では、私は上記のエラーを取得します。どんな助けもありがとう。前もって感謝します。あなたのバックエンドは、idの応答すべき

答えて

12

、すなわち

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

あなたは本当にあなたが特定のフィールドにidとして動作する場合を除き、シリアライザを使用する必要はありません。

import DS from 'ember-data'; 

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

とIDとユーザー名を使用しますので、上記の例では、燃えさし-データは、あなたのバックエンドが

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

を返すようにするか、このような何かを行うことができ期待します。

+0

おかげで、私は、サーバーがIDとして使用していたかを把握できませんでした。 – Jack

3

エラーを修正しました。問題は、バックエンドがユーザー名をidとして使用していて、emberがそれを認識できなかったことです。

エンバーシリアライザのための固定のコードは次のとおりです。たくさんのあなたの答えイゴールため

import DS from 'ember-data'; 

export default DS.JSONSerializer.extend({ 
    primaryKey: 'username' 
}); 
関連する問題