Mongoose runValidators在更新时忽略匹配验证器

时间:2017-12-19 05:37:28

标签: javascript mongodb validation mongoose match

我已经挣扎了很长一段时间,我可能只是疯了。我正在运行mongoose 4.11.4而我正在尝试创建一个基本的更新端点,以便我可以更新用户的名字和/或姓氏,它看起来像这样:

app.put('/api/user',function(req,res){
    User.findByIdAndUpdate(
        mongoose.Types.ObjectId(req.body.id),
        {
            $set:{
                firstName:req.body.firstName,
                lastName:req.body.lastName
            }
        },
        {
            new:true,
            runValidators:true
        },
        function(error,user){
            if(error){
                res.json(error);
            } else {
                res.json(user);
            }
        });
});

我有runValidators为true,我明确使用$ set。关于名字和姓氏的模式的相关部分如下所示:

    firstName: {
        type:String,
        required:true,
        match:[
            new RegExp("[a-zA-Z]"),
            "First name only allows letters!"
        ]
    },
    lastName: {
        type:String,
        required:true,
        match:[
            new RegExp("[a-zA-Z]"),
            "Last name only allows letters!"
        ]
    }

但我的正则表达式匹配永远不会得到验证,但如果我只是从我的请求中留下第一个或最后一个名称,那么唯一的验证器会检查并失败。我不知所措,我错过了一些非常明显的东西吗?

0 个答案:

没有答案