我在尝试使用以下脚本来验证输入时遇到了一些问题。
app = connect()
.use(connect.bodyParser()) #So we can get the post data.
.use(req,res) ->
valid = false if (req.body.name is "") or (req.body.question is "") or (req.body.email is "") #Was all the data submitted?
if valid
#process request
http.createServer(app).listen(1407)
为了调试,我使用 console.log 列出输入,它返回两个输入,一个包含正确的数据,另一个包含正确的数据
undefined
我之前也使用过
req.body.name?
,但它只是重写为req.body.question != null
,而不检查未定义。
HTML 表单
<form action="_serverurl_" method="post">
<input type="text" placeholder="Your Name" name="name">
<input type="text" placeholder="Your Email" name="email">
<input type="text" placeholder="Subject" name="subject">
<textarea name="question" placeholder="Question"></textarea>
<div class="right"><input type="submit" class="submit" name="submit" value="Send"></div>
</form>
最让我困惑的是为什么服务器有两个输入?
调试信息:
实际上我不明白为什么你的代码不起作用,但一种方法可能是将其分成更小的可管理组件。 为了进行验证,您可以定义一个函数,该函数允许您确定字段是否有效(请参阅下面的
isFieldValid
)。
isFieldValid = (field) -> field? and field.length > 0
app = connect()
.use(connect.bodyParser()) #So we can get the post data.
.use (req,res) ->
# pickup the body vars first to ease reading
{name, email, subject, question} = req.body
# valid should be always defined, even if it's only true/false
# Was all the data submitted?
valid = isFieldValid(name) and isFieldValid(email) and isFieldValid(question)
if valid
# process request
else
# handle invalid data
res.send(400, ...)
如果您正在寻找更复杂的验证库,我推荐Validator。
希望有帮助。