iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
自我挑戰組

NodeJS with MongoDB專案開發系列 第 28

day 28 node.js with mongo db專案開發

  • 分享至 

  • xImage
  •  

停車場空位系統查詢

現代的人開車是越來越普及的事情,因此在市區一個停車場的位置就一位難求,使用者越來越多,衍生出找不到車位的問題也越來越多,這時候就可以靠node.js連線mongo db寫一個停車場空位系統查詢
以下是一個簡單的Node.js應用程式,使用MongoDB實現停車場查詢空位系統的基本功能。在這個程式中,我將使用Express.js作為Web框架,MongoDB作為數據庫來存儲停車場信息和空位信息。

我已經安裝了Node.js和MongoDB,並已經創建了一個名為parking的數據庫,以及名為parkingLots的集合來存儲停車場信息。

// 匯入所需的模塊
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');

// 連接到MongoDB數據庫
mongoose.connect('mongodb://localhost/parking', { useNewUrlParser: true });

// 定義停車場模型
const ParkingLot = mongoose.model('ParkingLot', {
  name: String,
  totalSpaces: Number,
  availableSpaces: Number,
});

const app = express();
app.use(bodyParser.json());

// 獲取所有停車場信息
app.get('/parkingLots', async (req, res) => {
  try {
    const parkingLots = await ParkingLot.find();
    res.json(parkingLots);
  } catch (error) {
    res.status(500).json({ error: '無法獲取停車場信息' });
  }
});

// 獲取特定停車場信息
app.get('/parkingLots/:id', async (req, res) => {
  try {
    const parkingLot = await ParkingLot.findById(req.params.id);
    if (parkingLot) {
      res.json(parkingLot);
    } else {
      res.status(404).json({ error: '停車場未找到' });
    }
  } catch (error) {
    res.status(500).json({ error: '無法獲取停車場信息' });
  }
});

// 更新停車場的可用空位
app.put('/parkingLots/:id', async (req, res) => {
  try {
    const parkingLot = await ParkingLot.findById(req.params.id);
    if (parkingLot) {
      parkingLot.availableSpaces = req.body.availableSpaces;
      await parkingLot.save();
      res.json(parkingLot);
    } else {
      res.status(404).json({ error: '停車場未找到' });
    }
  } catch (error) {
    res.status(500).json({ error: '無法更新停車場信息' });
  }
});

app.listen(3000, () => {
  console.log('停車場查詢空位系統已啟動,監聽端口 3000');
});

在這個示例中,我定義了一個簡單的停車場模型,可以存儲停車場的名稱、總停車位和可用停車位。

以下是對程式的解釋:

  1. 匯入所需的模組:

    const express = require('express');
    const mongoose = require('mongoose');
    const bodyParser = require('body-parser');
    

    這裡導入了Express.js用於建立Web應用程式、Mongoose用於連接和操作MongoDB資料庫,以及body-parser用於解析HTTP請求體。

  2. 連接到MongoDB資料庫:

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

    這行程式碼連接到名為parking的MongoDB資料庫。這是應用程式的資料儲存地點。

  3. 定義停車場模型:

    const ParkingLot = mongoose.model('ParkingLot', {
      name: String,
      totalSpaces: Number,
      availableSpaces: Number,
    });
    

    這裡使用Mongoose定義了一個名為ParkingLot的MongoDB模型,用於儲存停車場的資訊,包括名稱、總停車位和可用停車位。

  4. 建立Express應用程式:

    const app = express();
    app.use(bodyParser.json());
    

    這裡建立了一個Express應用程式,並使用body-parser中間件來解析JSON請求體。

  5. 建立API端點:

    • GET /parkingLots:獲取所有停車場的資訊。

    • GET /parkingLots/:id:根據停車場的ID獲取特定停車場的資訊。

    • PUT /parkingLots/:id:更新特定停車場的可用停車位資訊。

    這些API端點分別用於獲取停車場資訊、獲取特定停車場資訊和更新停車場的可用停車位資訊。

  6. 啟動Express應用程式:

    app.listen(3000, () => {
      console.log('停車場查詢空位系統已啟動,監聽端口 3000');
    });
    

    這行程式碼啟動了Express應用程式,並監聽在端口3000上,以便透過HTTP訪問。當應用程式啟動時,會在控制台上打印一條訊息。

這個程式允許我透過HTTP請求來查詢停車場的資訊和更新停車場的可用停車位資訊。我可以使用Postman或其他HTTP請求工具來測試這些API端點。


上一篇
day 27noed.js with mongo db專案開發
下一篇
day 29 node.js with mongo db
系列文
NodeJS with MongoDB專案開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言