2

AfterSave保存されたばかりのオブジェクトの以前の値に基づいて、何か他のものを更新する関数があります。オブジェクトが変更されたことを単に知るだけでは十分でobject.existed()はありません。

コストのかかる回避策を実装したり、API 呼び出しの数を増やしたりせずに、オブジェクトのプロパティの以前の値を取得する方法はありますか?

関数内のオブジェクトの以前の値を取得することさえ可能AfterSaveですか?

を呼び出すとobject.previous("value")、未定義の値が返されます。

4

2 に答える 2

0

残念ながら、私は dstefanis のアプローチについてコメントする評判がありません。

このアプローチは、1 つのエンドポイントが値を変更している場合に適しています。実際、この目的のために以前に使用したことがあります。

複数のエンドポイントが書き込みを行っている場合、「現在の」フィールドと「古い」フィールドの両方を上書きし続ける可能性があるという重大な制限があります。これは、厳密な保証を与えるために使用できないことを意味します-たとえば、「このフィールドは決して減少しません」。

競合を回避する方法は、objectId で解析クエリを実行し、古い値を取得することです。その後、独自の競合解決を行うことができます。私はこれをテストして動作させています:-)

于 2015-02-26T01:02:54.193 に答える
0

これが役立つかどうか、または回避策としてコストがかかりすぎると見なされるかどうかはわかりませんが、元の列の以前の値を格納する列を更新中のオブジェクトに追加できます。これにより、関数内の以前の値にアクセスできますAfterSave

于 2014-10-27T07:04:38.200 に答える