Mongodb 向my API发送修补程序请求时,getUpdate处理程序会对架构中所需的字段抛出验证错误

Mongodb 向my API发送修补程序请求时,getUpdate处理程序会对架构中所需的字段抛出验证错误,mongodb,mongoose,keystonejs,Mongodb,Mongoose,Keystonejs,//下面的代码可以工作,但我不满意。如果没有显示的修复,它将抛出验证错误 exports.update = function(req,res) { List.model.findById(req.params.id).exec(function(err, item) { if (err) return res.apiError('database error', err); if (!item) return res.apiError('not fou

//下面的代码可以工作,但我不满意。如果没有显示的修复,它将抛出验证错误

exports.update = function(req,res) {

    List.model.findById(req.params.id).exec(function(err, item) {

        if (err) return res.apiError('database error', err);
        if (!item) return res.apiError('not found');
//在这里,我尝试了补丁和帖子

        var data = (req.method == 'PATCH') ? req.body : req.query;
//我添加这行代码是为了修复错误

        if (!data.email) {
            data.email = item.email
        }
//getUpdateHandler正在抛出错误

        item.getUpdateHandler(req).process(data, function(err) {
//这是我的邮递员请求

/api/item/update/58814243317de2ce8d8090fd
//这是我在删除上述修复程序时的错误

{
  "error": "create error",
   "detail": {
       "message": "Validation failed",
       "name": "ValidatorError",
       "errors": {
            "email": {
                "name": "ValidatorError",
                "path": "email",
                "message": "Email is required",
                "type": "required"
            }
       }
   }
}

//更新。我的问题:在get req上设置布局时,我没有将所需的值传递给表单。因此,未更新的值被发布为null。如果是必填字段,则会引发错误。修复了

您可以通过向更新处理程序传递
选项来为其提供要处理的字段列表。字段
(请参阅)。因此,也许您可以确定请求中发送了哪些字段,并告诉更新处理程序仅处理这些字段