2014-06-14 2 views
3

express-validator을 사용하여 노드/Express API에 매개 변수 유효성 검사를 구현하려고합니다. 그러나 다음 curl 명령 curl -X POST -d "foo=bar" http://localhost:3000/collections/test을 사용하여 누락 된 필드 (이 경우 이름)가있는 POST 요청을하면 유효성 검사를 건너 뛰어도 요청이 계속 진행됩니다. 아래는 현재 코드입니다 - 유효성 검사가 무시 된 이유에 대한 아이디어는 무엇입니까?Express Validator를 사용하여 POST 매개 변수 유효성 검사

var util = require('util'); 
var express = require('express'); 
var mongoskin = require('mongoskin'); 
var bodyParser = require('body-parser'); 
var expressValidator = require('express-validator'); 

var app = express(); 
app.use(bodyParser()); 
app.use(expressValidator()); 

var db = mongoskin.db('mongodb://@localhost:27017/test', {safe:true}) 

app.param('collectionName', function(req, res, next, collectionName){ 
    req.collection = db.collection(collectionName) 
    return next() 
}); 

app.post('/collections/:collectionName', function(req, res, next) { 
    req.checkBody('name', 'name is required').notEmpty(); 

    req.collection.insert(req.body, {}, function(e, results){ 
    if (e) return next(e) 
    res.send(results) 
    }); 
}); 

app.listen(3000); 

답변

8

요청을 처리하기 전에 유효성 검사 오류가 있는지 확인해야합니다. 자세한 내용은

app.post('/collections/:collectionName', function(req, res, next) { 
    req.checkBody('name', 'name is required').notEmpty(); 

    // check for errors! 
    var errors = req.validationErrors(); 
    if (errors) { 
    res.send('There have been validation errors: ' + util.inspect(errors), 400); 
    return; 
    } 

    req.collection.insert(req.body, {}, function(e, results){ 
    if (e) return next(e) 
    res.send(results) 
    }); 
}); 

사용의 예를 참조하십시오 : 당신의 post API에 대한 업데이트해야합니다 그래서 뭔가를 찾기 위해이 속임수를 썼는지 https://github.com/ctavan/express-validator#usage

+0

을 - 오류 로직을 몰랐습니다 'req.checkBody' 후에 필요합니다. 감사! – Anconia

관련 문제