在nodejs中,我们通常会执行以下操作:
req.checkBody('name', 'Group name is required.').notEmpty();
同样,我做过类似的事情:
req.checkBody('parent.name', 'Parent Name and group name should be different.').checkEquality(name);
这里检查相等是中间件中定义的函数,如下所示:
app.use(expressValidator({
customValidators: {
checkEquality: function(firstInput, secondInput) {
return firstInput.toLowerCase() != secondInput.toLowerCase();
}
}
}));
正如您在上面的代码中所看到的,checkEquality只是一个函数,如果firstInput等于secondInput,则返回该函数。
如果req.body.parent是一个对象,那么
每件事情都是正确的,所有验证都会根据需要成功通过或失败。
如果req.body.parent是字符串,那么
我收到一条错误,提到firstInput.toLowerCase()不是函数。
错误有些令人困惑,但我知道错误意味着什么:错误意味着firstInput未定义且未定义没有函数toLowerCase。
另外,据我所知,如果req.body.parent是一个字符串,那么parent.name将始终未定义。
所以,我试过了:
req.checkBody(('parent.name' == undefined ? 'parent' : 'parent.name'), 'Parent Name and group name should be different.').checkEquality(name);
但仍然没有运气。得到同样的错误。
我的意思是仍然使用这个代码,如果req.body.parent是一个对象,我会让一切顺利。但是如果req.body.parent是一个字符串,那么一切都很糟糕并且如上所述给出错误。
答案 0 :(得分:0)
答案比我想象的要简单得多:
我需要先检查一下:
>>> result
[['a', 'b', 'c', 'd', 'e'], ['f', 'g', 'h', 'i', 'j'], ['k', 'l', 'm', 'n', 'o']]