はじめに
nodejs + express + mongoDBでrouterによるapi管理の方法がなかなか見つからず、苦戦していたので、ここにメモ
構成
Code
server.js
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
require('dotenv').config()
app.use(express.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.set('view engine', 'ejs')
var db
const MongoClient = require('mongodb').MongoClient
const mongoDbUrl = `mongodb+srv://${process.env.MONGODB_ID}:${process.env.MONGODB_PASSWORD}@cluster0.akash.mongodb.net/?retryWrites=true&w=majority`
MongoClient.connect(mongoDbUrl, function (err, client) {
if (err) return console.log(err)
db = client.db('nodejs-work-request')
//rouetrで使えるように宣言
app.db = db
})
// server.jsでusers.jsを使用する
app.use('/', require('./routes/users.js'))
//server.jsで使用する場合のDBの使用方法、これをrouterで管理する
app.get('/users', function (req, res) {
db.collection('users').find().toArray((err, result) => {
res.send(result)
})
})
users.js
var router = require('express').Router();
router.get('/users', (req, res) => {
req.app.db.collection('users').find().toArray((err, result)=> {
res.send(result)
})
})
//server.js で使用するたにexport
module.exports = router;
関連