2016-11-13 3 views
0

データストアに新しいレコードを作成した後で、データをAPIに戻しても問題が残っています。Ember:カスタムJSONAPISerializer

// routes/application.js 

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model(){ 
    return this.store.findAll('user'); 
    }, 
    actions: { 
    test(name){ 
     this.store.createRecord('user', { 
     username: name, 
     email: '[email protected]', 
     is_staff: false 
     }).save(); 
    } 

    } 
}); 

REST APIは、この要求を期待している:

{ 
    "data": { 
     "type": "User", 
     "id": null, 
     "attributes": { 
      "username": "bill", 
      "email": "[email protected]", 
      "is_staff": false 
     } 
    } 
} 

エンバー-データはこれを送信している:ここでは

{ 
    data: 
    { 
     attributes: 
     { 
      username: "bill", 
      email: "[email protected]", 
      is-staff: false 
     }, 
    type: "users" 
    } 
} 

は、私は、カスタム・シリアライザのために持っているものですが、Ember社ではありませんそれを見て。私はこの権利をしていますか?あなたはnormalizeCreateRecordResponse方法をしようとしている

// routes/application.js 

    import Ember from 'ember'; 

    export default Ember.Route.extend({ 
     model(){ 
     return this.store.findAll('user'); 
     }, 
     actions: { 
     test(name){ 
      Ember.$.post('http://localhost:8000/api/users/', { 
      username: name, 
      email: '[email protected]', 
      is_staff: false 
      }); 
     } 
    }); 

答えて

1

を、しかし:サイドノートで

import DS from 'ember-data'; 

export default DS.JSONAPISerializer.extend({ 

    normalizeCreateRecordResponse(store, type, payload){ 
    return { 
     data: { 
     type: 'User', 
     id: null, 
     attributes: { 
      username: payload.username, 
      email: payload.email, 
      is_staff: payload.is_staff 
     } 
     } 
    } 
    } 

}); 

、APIが正しく動作していることを確認するために、私はjQuey.post()を介してデータを送信することができますこれは、レコードのPOST呼び出しを作成してサーバーからデータを取得するときです。

あなたが必要なサーバーに送信されたデータ変更したい場合:serializeメソッドを使用する

https://guides.emberjs.com/v2.0.0/models/customizing-serializers/#toc_customizing-serializers

を(そこに、よりきめの細かい制御のための他のシリアル化の方法がある..しかし、この1つはかなりあります簡単に試してみてください)

このリンクはそれを説明しています。あなたがそこからそれを理解できないなら、私に知らせてください。

関連する問題