【发布时间】:2017-10-06 04:57:40
【问题描述】:
当我使用 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 });
}
};
当我对结果进行控制台登录时,我得到的只是{ n: 1, nModified: 1, ok: 1 }
根本没有运行验证。请帮帮我。我已经坚持了一个半小时。
【问题讨论】: