質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

1回答

968閲覧

【Node.js】express validatorに関して質問です

moga101

総合スコア15

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2019/07/24 06:59

編集2019/07/26 13:00

質問

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(); }; });

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2019/07/24 07:06

エラーそのものはimportしたものが関数でない、という内容に過ぎないんですが、そもそもこのコードは何を参考にして組まれているんでしょうか? 公式リファレンスは読んでますか? https://express-validator.github.io/docs/
moga101

2019/07/24 08:01

入門の本を参考にして、簡易なデータベースを作っています。 ここは、データベースに情報を加える部分になります。もうちょっとリファレンスを調べてみます
gentaro

2019/07/24 08:56

なるほど。本に書いてある内容が古かったとかそういう系ですか…。 回答じゃないけどとりあえず3点指摘しておくと > バリデーションを制御するex-press-validatorを追加したところエラーが出ました。 「-」が余計に入っていると思います。固有名詞は正確に書かないと、似た名前の違うライブラリの回答が来る可能性があります。これは絶対に間違えてはいけないポイントです。 > 初心者なため解決方法がわからず、止まってしまっています。 質問文を編集し、初心者マークを付けておいたほうが良いです。 > それで書き直してみたのですが、エラーが出ず、どこがおかしいのかがわからないという状況です。。。。 エラーが出ると期待しているのであれば、入力値が何だったのかを提示しましょう。
moga101

2019/07/26 13:01

ありがとうございます。とりあえず初心者マークを追加してみました。 時間をとってまずバリデーションの仕組みから調べてみようと思います。
guest

回答1

0

こういったエラーが出た時に調べる方法

まずはリファレンスを読んでください。
最低限、使い方をググってください。(「express-validator」で検索すればいくつか見つかるはずです)

投稿2019/07/24 07:10

gentaro

総合スコア8949

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問