私の問題は、スタッフの名前や電子メールがすでにデータベースに存在するかどうかをチェックすることです。彼らは、更新前のミドルウェアでそれを行うのが良いと言います。私はそれを試みたが、それは動作していない。フィールドがデータベースに既に存在するかどうかを確認するにはどうすればよいですか?
(id_of_staff、updatedStaff_infoおよびcallback_function)を更新関数に渡します。実行される前の更新ミドルウェアと呼ばれる
module.exports.updateStaff = function(id, updatedStaff, callback){
var query = {_id: id};
Staff.update(query, updatedStaff, callback);
}
毎回Staff.update():
は、ここに私の更新機能です。私がここで欲しいのは、名前や電子メールがすでに存在するかどうかを確認することです。問題は、更新前のミドルウェアの名前と電子メールが未定義であることです。
マイプレ更新ミドルウェア:
staffSchema.pre("update", function(next){
var staff = this;
Staff.find({_id:{$ne: staff.id}, $or:[{name: staff.name}, {email: staff.email}]}, function (err, docs) {
if (!docs.length){
next();
}else{
next(new Error("Name or email already exist"));
}
});
})。
私が得た結果は、常に "名前または電子メールがすでに存在しています"です。私はstaff.nameの値をコンソールログに出力しようとしましたが、それは未定義です。私はそれを正しくしていますか?あなたはそれを働かせるために私を助けることができますか?大変ありがとうございました。
あなたの質問には、より良いタイトル、問題を説明するタイトルをください。 – Li357
あなたの質問のタイトルはあなたが質問している、または質問している問題を記述するべきです。あなたがMongooseを初めて使っているという事実は無関係であり、あなたが援助を受けることができるかどうかを尋ねるのは意味がありません。それがこのサイトの存在の全目的です。あなたのタイトルは、検索結果の将来の読者にとって意味のある方法で、問題を明確に記述する必要があります。 –
問題のタイトルにタグ名を使用しないでください。それはタグのためのものです。ただし、パラメータとして送信するものと、実際に期待するものが一致するかどうかの詳細は不明です。最も可能性の高い原因は、指定された条件が常にデータ内の何かと一致することです。それはあなたがそうすべきではないと思うことを示すことは、あなた次第です。 [最小限で完全で検証可能なサンプルを作成する方法](https://stackoverflow.com/help/mcve) –