質問
node.jsのexpress に関して質問です。
バリデーションを制御するex-press-validatorを追加したところエラーが出ました。
初心者なため解決方法がわからず、止まってしまっています。
よろしければ、ご回答と、こういったエラーが出た時に調べる方法などをご教授願いたいです。。。。
よろしくお願いします。
問題の部分
コード (js)
// 追加 var validator = require('express-validator'); app.use(validator());
表示されたエラー
app.use(validator()); // 追加 ^ TypeError: validator is not a function
追記
ご指摘いただいて、調べてみました。
以下がvalidatiorの機能を追加するために変更した部分になります。
データベースに情報を追加するところです。
どうもvalidatorをapp.useで使用可能にするのは去年までの話だったみたいで、今では
const { check, validationResult } = require('express-validator');
という風にして使うみたいです。
それで書き直してみたのですが、エラーが出ず、どこがおかしいのかがわからないという状況です。。。。
// 新規作成ページのアクセス router.get('/add', (req, res, next) => { var data = { title: 'Hello/Add', content: '新しいレコードを入力' } res.render('hello/add', data); }); // 新規作成フォーム送信の処理 router.post('/add', (req, res, next) => { check('name', 'NAMEは必ず入力してください。').notEmpty(); check('mail', 'MAILはメールアドレスを記入してください').isEmail(); check('age', 'AGEは年齢(整数)を入力してください').isInt(); const result = validationResult(req); if (!result.isEmpty()) { var re = '<ul class="error">'; var result_arr =result.array(); for(var n in result_arr) { re += '<li>' + result_arr[n].msg + '</li>' } re += '</ul>'; var data = { title: 'Hello/Add', content: re, form: req.body } res.render('hello/add', data); } else { var nm = req.body.name; var ml = req.body.mail; var ag = req.body.age; var data = {'name': nm, 'mail':ml, 'age':ag}; // データベースの設定情報 var connection = mysql.createConnection(mysql_setting); // データベースに接続 connection.connect(); // データを取り出す connection.query('insert into mydata set ?', data, function (error, results, fields) { res.redirect('/hello'); }); // 接続を解除 connection.end(); }; });