私はEmberに不慣れで、問題の解決策がどこにも見つかりません。ここのスタックや他のemberフォーラム)で質問を読みました。 、しかしそれらのどれも私のために働くようには見えません。
簡単なサインアップフォームを作成しようとしています。バックエンドには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()
});
Emberアダプター:import DS from'ember-data ';
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'
});
エンバールート:import Ember from'ember ';
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で応答する必要があります。
{"id":123,"username":"user1","password":"123","email":"[email protected]"}
特定のフィールドをIDとして機能させたい場合を除いて、シリアライザーを実際に使用する必要はありません。したがって、上記の例では、ember-dataはバックエンドが戻ることを期待します
{**"_id":123**,"username":"user1","password":"123","email":"[email protected]"}
または、次のようなことを行うことができます。
import DS from 'ember-data';
export default DS.JSONSerializer.extend({
primaryKey: 'username'
});
そして、IDとしてユーザー名を使用します。
エラーを修正しました。問題は、バックエンドがユーザー名をIDとして使用していたため、emberが認識できなかったことです。
Emberシリアライザーの固定コードは次のとおりです。
import DS from 'ember-data';
export default DS.JSONSerializer.extend({
primaryKey: 'username'
});