gpt4 book ai didi

javascript - 如何使用一个新的 Error() 显示多个 javascript 错误?

转载 作者:太空宇宙 更新时间:2023-11-04 02:36:24 25 4
gpt4 key购买 nike

我不确定如何在带有多条消息的 JavaScript 中创建错误。

这就是我目前正在做的事情,它只报告第一个最多的错误,如果有多个错误,它会一次一个地出现在列表中,不太用户友好。

middleware.validate = function(req, res, next) {
if (!req.form.name) return next(new Error("missing form input form name"));
if (!req.form.shop) return next(new Error("missing form input shop"));
if (!req.form.active) return next(new Error("missing form input active"));
if (!req.action) return next(new Error("missing form input action"));
return next();
}

以下是一些返回多于一条消息的替代方案:

middleware.validate = function(req, res, next) {
var errors = [];
if (!req.form.name) errors.push(new Error("missing form input form name"));
if (!req.form.shop) errors.push(new Error("missing form input shop"));
if (!req.form.active) errors.push(new Error("missing form input active"));
if (!req.action) errors.push(new Error("missing form input action"));
if(errors.length > 0){
var err = new Error("validation failed");
err.multiple = errors;
return next(err);
};
return next();
}

middleware.validate = function(req, res, next) {
var errors = [];
if (!req.form.name) errors.push("missing form input form name");
if (!req.form.shop) errors.push("missing form input shop");
if (!req.form.active) errors.push("missing form input active");
if (!req.action) errors.push("missing form input action");
if(errors.length > 0) return next(new Error(errors.join("/"));
return next();
}

有任何标准/最佳实践方法吗?

我讨厌连接数组错误,以及向 err 对象添加项目。 =[

这可能是最好的答案:

middleware.validate = function(req, res, next) {
var errors = [];
if (!req.form.name) errors.push("missing form input form name");
if (!req.form.shop) errors.push("missing form input shop");
if (!req.form.active) errors.push("missing form input active");
if (!req.action) errors.push("missing form input action");
if(errors.length > 0){
var err = new Error("validation failed");
err.messages = errors;
return next(err);
};
return next();
}

最佳答案

我创建了一个 npm 模块来解决这个问题error-suite

import MultiError from 'error-suite'

let multierror = new MultiError('Invalid Form.')
multierror.push('Invalid Name')
multierror.push('Invalid Email')
multierror.push('Invalid Phone Number')

console.log(multierror.errors) // [ [Error: Invalid Name], [Error: Invalid Email], [Error: Invalid Phone Number] ]
console.log(multierror.messages) // [ 'Invalid Name', 'Invalid Email', 'Invalid Phone Number' ]
console.log(multierror.errorsPresent) // true
console.log(multierror.shouldThrow) // true
if (multierror.shouldThrow) throw multierror // Error: Invalid Form. | Invalid Name, Invalid Email, Invalid Phone Number

https://github.com/reggi/error-suite/blob/master/src/multi-error.js

关于javascript - 如何使用一个新的 Error() 显示多个 javascript 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21960609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com