2014-02-27 29 views
1

我是node.js的新手,正在使用express-validator作爲中間件來運行此文件,以驗證我的請求中的POST數據。但我得到一個錯誤:表示中間件未觸發

(function(){ 
    var express = require("express"); 
    var expressValidator = require('express-validator'); 

    var app = express(); 

    app.all("*", function(req, res, next) { 
    console.log("inside my middleware") 
    next(); 
    }); 

    app.configure(function(){ 
    app.set("port", process.env.PORT || 3000); 
    app.use(express.json()); 
    app.use(express.urlencoded()); 
    app.use(expressValidator()); 
    app.use(express.methodOverride()); 
    app.use(app.router); 
    app.use(express.errorHandler()); 
    }); 

    app.post("/test", function(req, res){ 
    req.assert("email", "email is not valid").isEmail(); 
    res.send(200); 
    }) 

    app.listen(app.get("port"), function(){ 
    console.log("API Server is available on port %s", app.get("port")); 
    }); 

}()); 

這是告訴我,在POST/test請求有這應該是express-validator中間件的一部分,沒有方法斷言。我究竟做錯了什麼?

回答

-1

根據它的docs,還必須使用快遞BodyParser中間件:

app.use(express.bodyParser()); 
app.use(expressValidator([options])); // this line must be immediately after express.bodyParser()! 
+1

我讀過bodyParser()創造了很多的tmp文件,因此最好使用express.json()或url編碼() – user3361330

+0

您是否嘗試過使用bodyParser來查看它是否解決了問題? express-validator中的中間件函數同時使用了req.param和req.body,所以可能是沒有它的錯誤 –

+0

是的'TypeError:Object#沒有方法'assert''是我得到的錯誤,也是'req .body'未定義。 – user3361330