使用Node.js + Express + MongoDB来管理API。使用Router来管理API

首先

由于没有找到用Node.js + Express + MongoDB进行路由管理的API的方法,我一直很苦恼。因此,我在这里做个笔记。

构成

image.png

编码

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)
    })
})
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

相关

 

广告
将在 10 秒后关闭
bannerAds