LoginSignup
0
0

More than 1 year has passed since last update.

nodejs + express + mongoDB、 Routerでapi管理

Last updated at Posted at 2022-12-01

はじめに

nodejs + express + mongoDBでrouterによるapi管理の方法がなかなか見つからず、苦戦していたので、ここにメモ

構成

image.png

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;

image.png
問題なく、mongoDBから読み込めた。

関連

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