//以下代码有效,但我对它不满意。如果没有显示的修复程序,则会抛出验证错误。
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');
//这里我尝试过PATCH和POST
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。如果它是必填字段,则会引发错误。固定
答案 0 :(得分:0)
您可以通过传递options.fields
(请参阅here)为更新处理程序提供要处理的字段列表。那么也许你可以确定在请求中发送了哪些字段,并告诉更新处理程序只处理这些字段?