Когда дело доходит до исчерпывающих всеобъемлющих ошибок, мне любопытно, как люди генерируют длинные заявления без запроса сообщения для каждой возможности.Всеобъемлющие условные сообщения об ошибках
Выгода что-то вроде следующего:
if(typeof hello !== "undefined" && hello == 3){
}
, что оба условия необходимы. Я пробовал экспериментировать с использованием массивов и объектов для операторов if, подобных следующим.
var validate = [
(typeof hello !== "undefined"),
(hello == 3)
];
Затем вы можете использовать что-то вроде _.without()
функции underscore
«s, чтобы захватить true
против false
значения и проверить, если там, где какие-либо ошибки. Проблема с этим массивом выше заключается в том, что если hello не определено, будет ошибка.
var validate = [
(typeof hello !== "undefined"),
(typeof hello !== "undefined" && hello == 3)
];
Поэтому я должен сделать это, что очень повторяемо.
Примеры пока не дали ответа. Я только что придумал это.
var valid = [
(_.isObject(email)) ? false : "email is not object",
(dotty.exists(email, "event")) ? false : "event does not exist",
(email.event == "inbound") ? false : "event is not set to inbound",
(dotty.exists(email, "ts")) ? false : "ts does not exist"
];
var errors = _.without(valid, false);
if(errors.length == 0) // no errors
Это намного более прогрессивный.
var valid = [
(_.isObject(email)) ? false : "email is not object",
(dotty.exists(email, "event")) ? false : "event does not exist",
(dotty.exists(email, "event") && email.event == "inbound") ? false : "event is not set to inbound",
(dotty.exists(email, "ts")) ? false : "ts does not exist"
];
var errors = _.without(valid, false);
if(errors.length == 0) // no errors
Но мне все еще нужно быть подробным.
Все это относится к следующей идее.
Существует два способа обработки ошибок.
- Когда появляется сообщение об ошибке, иметь дело с этой ошибкой, прежде чем переходить
- Present все ошибки
я предпочитаю последний.
Существуют ли какие-либо библиотеки для поддержки сложных операторов if для целей проверки?
UPDATE
Поскольку следующий оператор не имеет ничего общего с предыдущим, который хорошо иногда, я застрял с сумасшедшим склоном.
Там должен быть какой-то способ, чтобы предотвратить это ...
typeof email !== "undefined"
typeof email !== "undefined" && _.isObject(email))
typeof email !== "undefined" && _.isObject(email)) && dotty.exists(email, "event"))
typeof email !== "undefined" && _.isObject(email)) && dotty.exists(email, "event")) && email.event == "inbound"
v.s легкость чтения
typeof email !== "undefined"
_.isObject(email))
dotty.exists(email, "event"))
email.event == "inbound"
Я хочу, чтобы это было проще и не иметь наклон. В приведенном ниже примере можно сказать, что email
: undefined
, но color
есть и он равен yellow
. Я хотел бы видеть отчет следующее сообщение об ошибке
(typeof email !== "undefined") ? false : "no email",
(_.isObject(email)) ? false : "email isn't object",
(dotty.exists(email, "event")) ? false : "event not present",
(email.event == "inbound") ? false : "event not inbound",
(typeof color !== "undefined") ? false : "no color",
(color == "yellow") ? false : "color not yellow",
[
"no email",
"email isn't object",
"event not present",
"event not inbound",
false,
false
]
Другими словами, я хочу, чтобы цвет не возвращается как ошибка, так как она действует. Но я хочу вернуть все другие ошибки.
Или мне просто нужно:
[
"no email",
false,
false
]
Если color
и email
где оба не определены, я не хочу видеть:
[
"no email"
]
Это заблуждение. Я хотел бы видеть по крайней мере
[
"no email",
"no color"
]
Или все
[
"no email",
"email isn't object",
"event not present",
"event not inbound",
"no color",
"color not yellow"
]
Больше примеров покатые:
var valid = [
(typeof email !== "undefined") ? false : "email is undefined", // halt the code
(typeof email !== "undefined" && _.isObject(email)) ? false : "email is not object",
(typeof email !== "undefined" && dotty.exists(email, "event")) ? false : "event does not exist",
(typeof email !== "undefined" && dotty.exists(email, "event") && email.event == "inbound") ? false : "event is not set to inbound",
(typeof email !== "undefined" && dotty.exists(email, "ts")) ? false : "ts does not exist"
];
var errors = _.without(valid, false);
if(errors.length == 0) // no errors
Это то, что вы пытаетесь сделать автоматизировать вызов сценариев проверки при сохранении подробности каждого недействительного условия? –
@ JaredFarrish Я так считаю. – ThomasReggi
Это звучит почти так, как будто вы говорите об [механизме правил] (http://www.jboss.org/drools/) (обратите внимание, что это Java, но эта концепция применяется). Таким образом, вы можете искать механизмы правил Javascript, возможно, [Правила JSON] (http://code.google.com/p/jsonrules/)? Может быть, [Node.js nools] (http://c2fo.github.com/nools/) может быть как-то полезен. –