【Node.js】MySQLがわからなくてもユーザーデータを扱える

Node.jsサーバーでユーザーデータを扱いたいけどMySQLがわからないし、難しそうだからやりたくない! そんな人いませんか?

私もそう思っていました。プログラミングをはじめて半年の初心者には難しいと感じました。今は少しずつSQLにも手を出しているのですが、今回は初心者向けにMySQLなどを使わずにユーザーデータを管理できる方法を紹介したいと思います。

とはいっても、本当はMySQLやRedisなどちゃんとしたデータベースサーバーを使うのが最も良い方法なので最終的にはそちらを使用するほうがいいです。とりあえず今すぐユーザーデータを扱いたいという人だけこの記事を参考にしてみてください。

簡易データベース

データベースサーバーを使うのがめんどくさい。わからない。難しそう。Node.jsだけでなんとかしたい。それなら、Jsonをデータベースとして利用すればNode.jsだけでなんとかなります。ただ、ちゃんとしたサービス運用には使えませんのでテスト段階や小さなプロジェクトなどに限定してください。

とりあえずJsonファイルのひな型てきなものを作っておきます。

今回はid, username, levelにしてみました。これをdatabase.jsonとして保存しておきます。

ユーザーを追加する

Node.jsで上のJsonにデータを追加してみたいと思います。

ファイルの読み書きをするためにfsモジュールを使用します。

var fs = require(“fs”);

そしてJsonを読み込みます。

新規ユーザーが登録するため、クライアント側からサーバー側に送られてきたと仮定してそれを追加してみたいと思います。追加は簡単です!

読み込んだdatabaseをJSON.parseして、pushするだけです。あとは保存してしまえばデータの追加は完了です。これで新規ユーザー登録にも対応できます。

ファイルの保存はfs.writeFileSyncでできます。

データを読み込んでユーザー認証する

今回はパスワードなしにしましたが、不特定多数のユーザーに公開する場合はパスワードも一緒に保存するといいでしょう。

生のパスワードをそのまま保存するのはあまりよくありませんが、ちゃんとしたデータベースではないので、そこは割り切りましょう。もしくはシーザー暗号化など使って一見パスワードをみてもわからないようにしておくと少しはマシかもしれません。

今回はクライアント側からユーザーネームを使ってユーザー情報を求めてきたと仮定して、該当するユーザーネームがあったらそのユーザーのidとlevelを渡すというようなことをやります。

さきほどと同じようにデータをreadFileSyncで読み込みます。そのあと受け取ったユーザーネームがデータベースにあるかどうか検証していきます。

forとif使ってできちゃいます。ifでユーザーデータが一致するかどうか調べるというのをforでユーザーデータの数だけ行うというものです。ifの中にidとlevelをサーバーからクライアントに渡すという処理を書けば、ログインシステムが作れると思います。

パスワードを使用する際は条件分岐を

if(database[i].username == user && database[i].password == pass)

という感じにするとユーザー名とパスワードで検証ができます。基本的なことだけでいろんなものが作れちゃうんですよね。

だからプログラミングっておもしろい!

初心者でもログインシステム作れます

いかがでしたか?データベースサーバーを使わなくても簡単にログインシステムっぽいものが作れました。こんなかんじで初歩的なプログラムでもいろんなものが作れるのです。

一見難しそうに思うことでも今持っている知識だけで作れちゃったりします。プログラミング初心者だから・・・と思わないでトライしてみてください!

シェアする

  • このエントリーをはてなブックマークに追加

フォローする