LoginSignup
0
0

More than 1 year has passed since last update.

[nodejs + mysql] routesでapiを管理する

Posted at

初めに

nodejs + mysql でベックエンドのコード書いているが、徐々にコートが長くなってカテゴリごとに分ける必要性を感じた。
ここで、routerという機能を使ってより管理しやすく環境を整えることを書いておく。

環境

window 10
mysql 8.0.31
ejs: 3.1.8
express: 4.18.2

Dir

dir
├─public
  index.html
  users.html
├─routes
  users.js
└─views
server.js

Code

routesで分ける前

server.js
const express = require('express');
const mysql = require('mysql');
const app = express();
app.set('view engine', 'ejs')

const con = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '12345678',
    database: 'nodejs',
    dateStrings: "date",
    multipleStatements: true
});

con.connect((err) => {
    if (err) {
        console.log('error connecting: ' + err.stack);
        return;
    }
    console.log('success');
        ;
    });
});


app.get('/', function (req, res) {
    res.render('index.ejs')
})


// このusersに関連したapiをカテゴリ別で分けたい
app.get('/users', (req, res) => {
    const sql = "select * from users"
    con.query(sql, function (err, result, fields) {
        if (err) throw err;
        res.render('users.ejs', { users: result })
    })
})

分けた後

server.js
...


//DBをusers.jsで使用するためにexportする
module.exports = con

// 元々のusersに関するすべてのコードの代わりにこれを書いておく
app.use('/', require('./routes/users.js'));
/routes/users.js
var router = require('express').Router();
const con = require('./../server.js')

//appの代わりにrouterを使用する
router.get('/users', (req, res) => {
    const sql = "select * from users"
    con.query(sql, function (err, result, fields) {
        if (err) throw err;
        res.render('users.ejs', { users: result })
    })
})

//server.jsで使用するためにexportする
module.exports = router;

おわりに

自分が不便を感じるところはだいたい、誰かが便利な機能を作っておくんだと実感した部分ですね。
計画的にapiを書くことによって将来的に管理しやすいプロジェクトが出来上がりそうです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0