mongooseでドキュメントを更新するときに検証を実行するのが難しいです。誰かが見て、私を助けることができますか?私はasyncも使用しています。更新時にマングーススキーマの検証が実行されない
説明のため。私はmongooseのv4.9.8を使用しています。ここ
import mongoose, { Schema } from "mongoose";
import uniqueValidator from "mongoose-unique-validator";
import { isEmail } from "validator";
mongoose.Promise = global.Promise;
const userSchema = new Schema({
username: {
type: String,
required: true,
minlength: [5, "Username must be 5 characters or more"],
unique: true
},
email: {
type: String,
required: true,
unique: true,
validate: {
validator: value => isEmail(value),
message: "invalid email address"
}
},
password: {
type: String,
required: true,
minlength: [8, "Password must be 8 characters or more"]
}
}, {
timestamps: true
});
userSchema.plugin(uniqueValidator);
const User = mongoose.model("User", userSchema);
export default User;
そして、私の更新エンドポイントは次のとおりです。
は、ここに私のスキーマです。
usersController.updateUser = async function(req,res){
try {
if(req.body.password !== undefined){
const hashedPassword = await bcrypt.hash(req.body.password, 10);
req.body.password = hashedPassword;
}
const { userID } = req.params;
const opts = { runValidators: true };
const results = await User.update({ _id: userID }, { $set : req.body }, opts).exec();
console.log(results);
return res.status(200).json();
} catch(error){
console.log(error);
return res.status(500).json({ error });
}
};
私は結果にはconsole.logを行うと私が得るすべてはこの{ n: 1, nModified: 1, ok: 1 }
ませ検証がまったく実行されていないです。私を助けてください。私はこれを1時間半続けていた。
これはドキュメントにはありませんでした。ありがとう! – Nate