空inputvalidation不起作用

我一直有一些问题试图获得以下脚本来validationinput。

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) 

为了debugging我已经使用console.log列出input,它返回两个input,其中一个具有正确的数据,另一个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> 

最让我困扰的部分是为什么服务器有两个input?

debugging信息:

  • 节点版本:v0.10.21
  • 连接版本:v2.12.0

其实我看不出为什么你的代码不起作用,但是一种方法可能会把它分解成更小的可pipe理组件。 为了进行validation,您可以定义一个函数,使您可以确定字段是否有效(请参阅下面的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, ...) 

如果你正在寻找更精细的validation库,我会推荐Validator 。

希望有所帮助。