文書のicon
属性を更新するためにpre('findOneAndUpdate')
を使用しようとしています。更新は、yearlymeeting
属性の既存の値に基づいています(下記参照)。Mongoose( 'findOneAndUpdate')ミドルウェア:オリジナル文書へのアクセスが必要
pre
とpost
save()
フックがupdate()
上で実行されていないので、私はすべて元の文書にアクセスすることができないように見えます。しかし、これは私が実行しようとしている操作にとって非常に重要です。これを回避する方法はありますか?
例えば、私はそうのように、pre('save')
に私の目的を達成することができる午前:私は理解して
meetingSchema.pre('findOneAndUpdate', function(next) {
const yearlymeetingSlug = originalDocument.yearlymeeting[0].toLowerCase().replace(/[^A-z0-9]/g, '');
this.icon = `${yearlymeetingSlug}.png`
next();
});
:私は行うことができるようにしたいと思い何
meetingSchema.pre('save', function(next) {
const yearlymeetingSlug = this.yearlymeeting[0].toLowerCase().replace(/[^A-z0-9]/g, '');
this.icon = `${yearlymeetingSlug}.png`
next();
});
はこのようなものですプレフィックス(findOneAndUpdate
)のthis
は、格納されたドキュメント自体ではなく、クエリを参照します。文書にアクセスする方法はありますか?そのため、yearlymeeting
の保存値に基づいてicon
を更新できますか?
あなたが理解していれば、 "ドキュメント"は変更点で "サーバ"上にあることを理解するでしょう。したがって、 "クライアント"上のライブラリ機能がドキュメントを変更することはできません。 '.findOneAndUpdate()'は、実際に命令で送信している「現在のデータ」のみを認識します。フィールドコンテンツが既にクライアント上にある場合は、オプションを '$ set'などに入力する前に変更を加えます。あなたがそのデータを持っていない場合は、代わりにサーバから取得する必要があります。 MongoDBが既存の値 –