解決できない奇妙な問題があります。私はマングーススキーマを持っています:
Product = new Schema({
title: {
type: String
},
prices: {
type: Array
},
sync: {
type: Boolean
}
...
同期フラグがtrueの場合、ポストセーブミドルウェアを使用してサードパーティのサイトを更新します。その操作が戻ったら、prices配列を更新し、syncをfalseに設定して、無限ループが発生しないようにします。
Product.post('save', function () {
if(this.sync) {
this.title = "HELLO";
this.prices[0].retail = '24';
this.sync = false;
this.save();
}
});
上記を実行すると、タイトルと同期フィールドは変更されますが、価格配列は変更されません。実際、スキーマ内の配列を更新できません。上記の例では、prices配列には約10個のエントリが含まれています。各エントリには、小売フィールドを含む多くのフィールドが含まれています。また、その配列に追加してみました。
this.prices.push({ retail: "10 });
アレイを再初期化するだけでなく、次のようにします。
this.prices = [];
私が何をしても効果はありません。ただし、配列以外のフィールドは更新できます。
何が起こっているのかアイデアはありますか?