私はCategory
それが唯一の財産であるモデルを持っていますname
。
モデルの名前を含む文字列フィールドとを含むSubCategory
モデルもあります。name
category
Category
Category
モデルがname
変更されると、そのカテゴリを指すそれぞれがSubCategory
、category
新しい名前に一致するようにそのフィールドを更新する必要があります。
私は現在SubCategories
、特定のカテゴリを指すすべてのポイントを取得し、それらを反復処理してそのカテゴリフィールドを更新することにより、ルートハンドラに直接これを実装しています。
このロジックを、それが属するべきモデルに実装したいと思います。
Category
モデルにプリミドルウェアを作成しました。
CategorySchema.pre('save', function(next) {
console.log('Saving ' + this.name);
next();
});
リクエストを担当するルートハンドラーは、PUT
次のように更新された名前でモデルを保存します。
...
parentCategory.name = requestedName;
parentCategory.validate(function(validationError) {
if (validationError) {
return res.send(response.BAD_REQUEST);
}
parentCategory.save(function(saveError) {
if(saveError) {
return res.send(response.SERVER_ERROR);
}
});
});
...
ただし、新しい名前が印刷されるので、新しい名前にしかアクセスできないため、サブカテゴリを繰り返すことはできません。
古い名前と新しい名前の両方をミドルウェアに渡して、そこで作業を行う方法がわかりません。