更新於 2024/10/11閱讀時間約 5 分鐘

MongoDB(三) :Mongoose實戰

    ※ 具備三項工具:

    1. 編輯器
    2. 終端機
    3. 瀏覽器

    ※ 步驟一:建立資料夾

    mkdir mongodb-demo
    cd mongodb-demo
    code .

    ※ 步驟二:初始化,建立package.json

    npm init -y


    ※ 步驟三:安裝網頁伺服器 – Express

    因為Express 是一個 Node.js 網路應用框架,透過它能快速建立簡單且可用的網頁伺服器。

    npm install express -p


    ※ 步驟四:導入 Express 模組

    const express = require('express')


    ※ 步驟五:建立一個 Express 應用

    const app = express()


    ※ 步驟六:啟動並監聽伺服器

    const PORT = 3000

    app.listen(PORT, () => {
    console.log(`App is running on http://localhost:${PORT}`)
    })


    ※ 步驟七:安裝nodemon 自動重啟伺服器

    npm install -g nodemon


    ※ 步驟八:使用 nodemon

    nodemon app.js



    ※ 步驟九:Express 中設定路由

    app.get('/', (req, res) => {
    res.status(200).send('OK')
    })


    ※ 步驟十:下載Mongoose

    npm install mongoose -p


    ※ 步驟十一:引進Mongoose並和資料庫連線

    mongoose.connect('mongodb://localhost/school', {
    useNewUrlParser: true,
    useUnifiedTopology: true
    });


    ※ 步驟十二:建立Schema

    const SchoolSchema = new mongoose.Schema({
    name: String,
    level: Number,
    is_close: Boolean
    })


    ※ 步驟十三:建立Model

    const School = mongoose.model('school', SchoolSchema)


    ※ 步驟十四:使用Find找到資料庫裡面的資料


    //async 和 await 使得寫異步代碼的過程更像是寫同步代碼
    app.get('/', async (req, res) => {
    const schools = await School.find({})
    res.status(200).send(schools)
    })


    ※ 步驟十五:新增資料

    //新增資料的路由
    app.post('/school', async (req, res) => {
    await School.create({
    name: '我的大學',
    level: 0,
    is_close: false
    })
    res.status(200).send('Create School Success')
    })


    ※ 步驟十六:刪除資料

    app.delete('/school', async (req, res) => {
    const { id } = req.query
    await School.deleteOne({
    _id: id
    })
    res.status(200).send('Delete' + id + 'School Success')
    })


    ※ 步驟十七:更新資料

    app.put('/school', async (req, res) => {
    const { id, name, is_close } = req.query
    await School.updateOne({ _id: id }, {

    name,
    is_close
    })

    res.status(200).send('Update_id' + id + 'School Success')
    })
    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.