あなたが何を求めているのかよくわかりませんが、レコードが適切なcommitDetails
セットに追加される場所を探しているなら、これcommitDetails
がプロパティ自体で探している行だと思います。
関連するコードは次のとおりです。
forEach(records, function(record) {
if(!get(record, 'isDirty')) return;
record.send('willCommit');
var adapter = store.adapterForType(record.constructor);
commitDetails.get(adapter)[get(record, 'dirtyType')].add(record);
});
それを見てみましょう。
forEach(records, function(record) {
if(!get(record, 'isDirty')) return;
上記は、トランザクションの各レコードについて、ダーティでない場合は無視することを示しています。
record.send('willCommit');
それ以外の場合は、その状態を inFlight に更新します。
var adapter = store.adapterForType(record.constructor);
レコードのアダプターを取得します。
commitDetails.get(adapter)
このメソッドの先頭でインスタンス化されたアダプターの作成/更新/削除されたトリオ オブジェクトを検索します。これは、値が空の OrderedSet である、作成、更新、および削除された 3 つのプロパティを持つ単純なオブジェクトです。
[get(record, 'dirtyType')]
取得したばかりのオブジェクトから適切な OrderedSet を取得します。たとえば、現在のレコードが更新された場合、get(record, 'dirtyType')
は文字列 を返しますupdated
。角かっこは単なる標準の JavaScript プロパティ ルックアップであるため、前の手順でトリオ オブジェクトから更新された OrderedSet を取得します。
.add(record);
最後に、レコードを OrderedSet に追加します。ループの後続の反復では、同じタイプの他のレコードを追加するため、作成されたすべてのレコードが 1 つのセットに追加され、更新されたすべてのレコードが別のセットに追加され、削除されたすべてのレコードが 3 番目のセットに追加されます。
メソッド全体の最後で最終的にプロパティから返されるのは、キーがアダプターであり、値が作成、更新、および削除された 3 つのプロパティを持つこれらのオブジェクトである Map です。これらはそれぞれ、そのアダプター用に作成され、そのアダプター用に更新され、そのアダプター用に削除された、トランザクション内のすべてのレコードの OrderedSets です。
この計算されたプロパティは とマークされvolatile
ているため、誰かがプロパティを取得するたびに再計算されることに注意してくださいcommitDetails
。