Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8691

Node.jsとMongoDBを使ったログイン機能の実装をMacのlocalhostで試す

$
0
0

Node.jsとMongoDBを使ったログイン機能の実装をMacのlocalhostで試す

Webサービスを作りたいので、ログイン機能をlocalhostで試します。

MongoDBとNode.jsを使います。

Node.jsのインストールの説明は割愛。

MongoDBのインストールから起動まで

インストールの前処理

brew tap mongodb/brew

インストール

brew install mongodb-community

保存場所作成

sudo mkdir /var/lib/mongodb

ログ作成

sudo touch /var/log/mongodb.log

起動

sudo mongod --dbpath /var/lib/mongodb --logpath /var/log/mongodb.log

ログイン機能の実装

まず、モジュールをインストールしておきます。
npm install express
npm install monogodb
下記のコードで sign up と login が出来ると思います。

server.js
constexpress=require('express');constapp=express();constbodyParser=require('body-parser');constMongoClient=require('mongodb').MongoClient;consthttp=require('http').Server(app);consturl='mongodb://localhost:27017';constdbName='myMongo';constconnectOption={useNewUrlParser:true,useUnifiedTopology:true,}consttransactionKururiDownload=async(data,res)=>{letclient;letlogin=false;try{client=awaitMongoClient.connect(url,connectOption);constdb=client.db(dbName);constcollection=db.collection('account');awaitcollection.find({}).toArray((err,docs)=>{for(constdocofdocs){if(doc.mail==data.mail){if(doc.password==data.password){login=true;res.sendFile(__dirname+"/index.html");}}}if(!login){res.send("login error");}});}catch(error){console.log(error);}finally{//    client.close();}};consttransactionKururiInsert=async(data,res)=>{letclient;data=Object.assign(data,{date:newDate()});try{client=awaitMongoClient.connect(url,connectOption);constdb=client.db(dbName);constcollection=db.collection('account');consta=awaitcollection.updateOne({mail:data.mail,password:data.password,name:data.name,date:data.date},{$set:data},true);if(a.result.n==0){awaitcollection.insertOne(data);}}catch(error){console.log(error);}finally{client.close();}};app.use(bodyParser.urlencoded({extended:true}));app.use(bodyParser.json());app.get('/',(req,res)=>{res.sendFile(__dirname+"/login.html");});app.get('/signup',(req,res)=>{res.sendFile(__dirname+"/signup.html");});app.post('/signup',async(req,res)=>{letclient;letexist=false;try{client=awaitMongoClient.connect(url,connectOption);constdb=client.db(dbName);constcollection=db.collection('account');awaitcollection.find({}).toArray((err,docs)=>{console.log(docs);for(constdocofdocs){if(doc.mail==req.body.mail){console.log(req.body.mail);exist=true;}}letuser={mail:"",name:"",password:""};if(!exist&&req.body.mail!=""&&req.body.password!=""){user["mail"]=req.body.mail;user["password"]=req.body.password;user["name"]=user.mail.substr(0,user.mail.indexOf("@"));transactionKururiInsert(user,res);res.sendFile(__dirname+"/signuped.html");}else{res.sendFile(__dirname+"/signuperror.html");}});}catch(error){console.log(error);}finally{//    client.close();}});app.post('/',(req,res)=>{letuser={mail:"",name:"",password:""};user["mail"]=req.body.mail;user["password"]=req.body.password;user["name"]=user.mail.substr(0,user.mail.indexOf("@"));transactionKururiDownload(user,res);});http.listen(8080,()=>{console.log('listening on :8080');});
login.html
<html><head><title>login</title></head><bodystyle="width: 100%; display: flex; flex-direction: column; justify-content: center; align-items: center;"><formaction=""method="post"><h1>login</h1><table><tr><td>mail</td><td><inputid="mail"name="mail"type="mail"/></td></tr><tr><td>password</td><td><inputid="password"name="password"type="password"/></td></tr></table><button>send</button></form><br><ahref="signup">sign up</a></body></html>
signup.html
<html><head><title>signup</title></head><bodystyle="width: 100%; display: flex; flex-direction: column; justify-content: center; align-items: center;"><formaction=""method="post"><h1>signup</h1><table><tr><td>mail</td><td><inputid="mail"name="mail"type="mail"/></td></tr><tr><td>password</td><td><inputid="password"name="password"type="password"/></td></tr></table><button>send</button></form></body></html>
signuped.html
<!Doctype html><html><head><title>logined</title></head><bodystyle="width: 100%; display: flex; flex-direction: column; justify-content: center; align-items: center;"><h1>Success signup!</h1><ahref="/">please login</a></body></html>
signuperror.html
<!Doctype html><html><head><title>error</title></head><bodystyle="width: 100%; display: flex; flex-direction: column; justify-content: center; align-items: center;"><h1>signup error</h1></body></html>
index.html
<!DOCTYPE html><html><head><title>test</title></head><body>
        login success!
    </body></html>

Viewing all articles
Browse latest Browse all 8691

Trending Articles