を破壊しながら、私は、レコードを破壊しようとしていると私はEmber.jsエラー記録
An adapter cannot assign a new id to a record that already has an id.
[…] had id: 25 and you tried to update it with null. This likely happened because
your server returned data in response to a find or update that had a different
id than the one you sent.
このエラーを取得する私のREST APIは空のオブジェクトの応答{}
で200
ステータスコードを返します。私はその問題がどこにあるかを想定しているので、いくつかのシリアライザフック(normalizeDeleteRecordResponse
、extractDeleteRecord
、さらにはnormalizeResponse
)をカスタマイズしようとしていますが、それらのどれも実際に呼び出されることはありません。
私のスタックトレースを見れば、エラーはフックにあるようですが、これは空のJSONペイロードを受け取り、それをupdateId
に渡していると考えられます。
ありがとうございました。これは 'Object.keys(response).length'を除いて動作します。私は狂っていた。しかし、これは私には直感的ではありません。もしあなたが気にしないのなら、これを明確にすることができます:私は、アダプターがバックエンドが期待しているように**サーバーに送る**アダプターを*適応させると仮定しました。シリアライザーは* Emberが期待しているようにサーバーを作る*。だから私はシリアライザーを見ていたのです。何か不足していますか?これらのフックがすべて実行される順序を見つけることができる場所はありますか? – Sunyatasattva
アダプタとシリアライザは両方とも、Ember Dataの受信データと送信データの両方で動作します。アダプターは、xhr、websockets、または何かを経由してapiとの通信を処理する通信レイヤーです。それが返すのは、シリアライザに渡されるオブジェクトとしてのデータを返す約束です。これは、それを[DS.Model](http://emberjs.com/api/data/classes/DS.Model.html)に変換します。 。途中でシリアライザは、レコード(または実際にはそのスナップショット)をアダプタがAPIに送信する通常のオブジェクトに戻します。 –
私は、ドキュメントとリポジトリを見て、Ember Dataと私が考え出すことができる順序について何か良いものを見つけました。[architecture-overview](https://guides.emberjs.com/v2) .6.0/models /#toc_architecture-overview) シリアライザを考慮に入れません。 –