allow メソッドまたは deny メソッドで挿入または更新する前に、フィールドをドキュメントに追加または削除する必要があります。私は、変換機能が必要な機能を提供すると推測していました。
流星のドキュメントの状態
「オプションの変換関数。ドキュメントは、fetch または findOne から返される前、および監視、許可、および拒否のコールバックに渡される前に、この関数を介して渡されます。」
関数からドキュメントを変換して返そうとするたびに、許可または拒否のいずれかからドキュメントの変換されたバージョンがmongodbに挿入されたものではありませんでした。2つの戦略で変身してみました。
戦略 1
var ts = new Date();
return _.extend(_.pick(doc, 'name', 'discounts', 'locations', 'url_map', 'client_updated_td', '_id'), { created_td:
ts, updated_td: ts, });
戦略 2
// Discountsroutings.fields is in /lib/Discountroutings.js
Discountsroutings.fields = ['_id', 'created_td', 'updated_td', 'client_updated_td', 'name', 'discounts', 'locations', 'url_map'];
// this is in /server/discountsroutings.js var ts = new Date();
doc.created_td = ts; doc.updated_td = ts; return _.each(doc,function(value, key, list){
if(Discountsroutings.fields.indexOf(key) == -1 ){
delete doc[key];
}
});
どちらも機能しませんでした。どちらの場合も、フィールドは追加されましたが、フィールドは削除されませんでした。
興味深いことに、挿入許可と挿入拒否の内部から同じ 2 つの戦略を試しましたが、戦略 #2 だけが機能しました。したがって、今のところ、Deny 挿入/更新メソッド内で戦略 #2を使用しています。正常に動作し、配線も難しくありません。
私はこれを正しくやっていますか?コレクション サーバー側のフィールドを正しい方法で追加または削除したい。