2017-01-13 7 views
0

現在、expressjsで作業しています。express validatorを検証用に、Multipartyをマルチパート・フォーム用に使用しています。マルチパートを使用したExpressバリデーターは動作しません.Expressjs

私はexpress-validatorが私のテキストフォームをアサートしたいと思うときは、私がmultipartyを使用するので、それはすべきではありません。

ここは私のコードです。

const express = require('express'); 
 
const app = express(); 
 
const expressValidator = require('express-validator'); 
 
const multiparty = require('multiparty'); 
 

 
app.use(expressValidator({ 
 
    errorFormatter: function(param, msg, value) { 
 
     var namespace = param.split('.') 
 
     , root = namespace.shift() 
 
     , formParam = root; 
 

 
    while(namespace.length) { 
 
     formParam += '[' + namespace.shift() + ']'; 
 
    } 
 
    return { 
 
     param : formParam, 
 
     msg : msg, 
 
     value : value 
 
    }; 
 
    } 
 
})); 
 

 

 

 
app.post('/store', (req, res, next)=>{ 
 
    const form = new multiparty.Form(); 
 
    
 
    form.parse(req, (err, fields, files)=>{ 
 
    req.assert('name','Store name is required.').notEmpty(); 
 
    req.assert('description', 'Store Description is required.').notEmpty(); 
 
    req.assert('category', 'Store Category is required.').notEmpty(); 
 
    
 
    const errors = req.validationErrors(); 
 
    if(errors){ 
 
     console.log(errors); 
 
    }else{ 
 
     
 
    // upload the file and save the data; 
 
    } 
 
    }); 
 
    
 
});

にconsole.log(エラー)結果は常に配列は、3つのオブジェクトが含まれている、それも私が名前と説明フィールドに値を与えることのように常にだ、それはまだそれとして返します返します。

enter image description here

私は同様の問題Hereを読みましたが、まだカントは私の問題を解決します。助けて。

質問は、Expressバリデーターとマルチパーティーを一緒に使用して フィールドを検証する方法です。

答えて

0

あなたは、私がドキュメントに表示することを、この場合には、検証の結果を参照するためにreq.getValidationResult().を使用しました:

req.getValidationResult().then(function(result){ 
}) 
+0

私は、最初の引数はREQであるform.parse。 form.parse(req、(err、fields、files)=> { )私はreq.validationErrors();を使用することができます } –

+0

私は自分の答えを更新しました – farhadamjady

関連する問題