用Node.js+express+cloud MongoDB Atlas創建API接口

介紹

  • 本文用 node.js express框架鏈接 cloud MongoDB Atlas 搭建API接口
  • 本文側重於cloud MongoDB Atlas

建立項目

  • 建立一個文件夾 用VScode編譯器打開
  • 選擇文件夾在終端打開

在終端中輸入 npm init 而後一直回車 最後確認javascript

node.js 安裝 express 輸入npm install express nodemon回車java

  • 完成後打開 package.json 檢查是否安裝成功 安裝成功以下圖:

  • 安裝成功後 修改 scripts 修改成 "start": "nodemon app.js"

創建API端口

在當前目錄下 建立 app.js 文件node

const express = require("express")
const app = express()

app.get('/' , (req,res) => {
  res.send("Hello World")
})

//端口
app.listen(3000)
複製代碼

保存 在終端中 輸入 npm start 打開瀏覽器 打開 https://localhost:3000git

端口創建完成

  • node.js安裝 mongoDB 在終端中ctrl+c 終止批處理操做 再輸入 npm install mongoose 回車安裝

註冊與建立cloud MongoDB Atlas

點我進MongoDB官網github

  • 點擊右上角 TryFree 註冊一個新用戶能夠得到500m的免費雲數據
  • 正常填寫郵箱密碼註冊完成進入主頁
  • 選擇 FREE 點擊 Create a Starter Cluster
  • 隨便選擇一個亞洲節點 我這裏是選擇taiwan的
  • 給你項目起個名稱

  • 完成後點擊下方的Create Cluster建立

  • 頁面會自動跳轉 而後等待7-10分鐘 等項目初始化完成
  • 完成以後顯示以下界面

  • 點擊右側欄Network Access給項目 再點擊 +ADD IP ADDRESS添加接入IP
  • 我這邊選擇全部IP均可以接入 ALLOW ACCESS FROM ANYWHERE 再確認Confirm

  • 須要在註冊郵箱確認 全部IP均可以接入 點擊郵箱的鏈接便可確認

  • 確認完成狀態:

  • 點擊右側欄Database Access 再點擊 +ADD NEW USER添加接入用戶
  • 填寫用戶名 密碼 和選擇權限後添加

  • 點擊右側欄Clusters 再點擊 COLLECTIONS

  • 選擇添加個人數據庫 填寫好後建立 建立成功
    點擊 右側欄Clusters 返回主頁 點擊 CONNECT 鏈接數據
    點擊 Copy

  • 修改成user123的密碼 admin修改成建立的數據庫名
  • 例:
mongodb+srv://user123:user123@cluster0-kxpls.azure.mongodb.net/userDB?retryWrites=true&w=majority
複製代碼
  • node.js 安裝 doenv 輸入 npm install doenv 回車安裝
  • 安裝完成後 在根目錄添加文件.env在文件中寫入鏈接數據庫的url
DB_CONNECTION=mongodb+srv://user123:user123@cluster0-kxpls.azure.mongodb.net/userDB?retryWrites=true&w=majority
複製代碼
  • 鏈接數據庫 在app.js中寫入
const mongoose = require("mongoose")
require("dotenv/config")

mongoose.connect(process.env.DB_CONNECTION,{ useUnifiedTopology: true,useNewUrlParser: true },() => {
  console.log("connect DB!")
})

複製代碼

數據庫的增刪改查操做

  • 在根目錄下建立routes文件夾 在文件加下建立posts.js文件來統一處理數據庫增刪改查代碼的編寫
  • 在根目錄下建立models文件夾 在文件加下建立Post.js文件來處理數據庫鍵名添加

  • posts.js文件中 引入 models文件下的Post.js
const Post = require('../models/Post')
複製代碼
  • Post.js中寫入 數據庫測試的鍵名
const mongoose = require('mongoose')
const PostSchema = mongoose.Schema({
    title:{
        type:String,
        required:true
    },
    connect:{
        type:String,
        required:true
    },
    date:{
        type:Date,
        dafault: Date.now
    }
})
module.exports = mongoose.model('Posts' , PostSchema)
複製代碼
  • app.js文件中 引入 routes文件下的posts.js
const postRoute = require('./routes/posts')
app.use('/posts',postRoute)
複製代碼

-在posts.js文件下寫入增刪改查代碼mongodb

const express = require("express")
const router = express.Router()
const Post = require('../models/Post')

//查詢數據庫全部數據
router.get('/', async (req, res) => {
    try {
        const finePosts = await Post.find()
        res.json(finePosts)
    } catch (err) {
        res.json({ message: err })
    }
})
//添加數據
router.post('/', async (req, res) => {
    const post = new Post({
        title: req.body.title,
        connect: req.body.connect
    })
    try {
        const savePost = await post.save()
        res.json(savePost)
    } catch (err) {
        res.json({ message: err })
    }
})
//查找對應id的數據
router.get('/:postId', async (req, res) => {
    try {
        const findPost = await Post.findById(req.params.postId)
        res.json(findPost)
    } catch (err) {
        res.json({ message: err })
    }
})
//刪除數據
router.delete('/:postId', async (req, res) => {
    try {
        const removePost = await Post.remove({ _id: req.params.postId })
        res.json(removePost)
    } catch (err) {
        res.json({ message: err })
    }
})
//修改數據
router.patch('/:postId', async (req, res) => {
    try {
        const updatePost = await Post.updateOne({ _id: req.params.postId }, { $set: { title: req.body.title } })
        res.json(updatePost)
    } catch (err) {
        res.json({ message: err })
    }
})

module.exports = router
複製代碼
  • 注意:若須要在服務端上正常運行還須要安裝如下依賴
  • node.js 安裝 doenv 輸入 npm install body-parser 回車安裝
  • node.js 安裝 doenv 輸入 npm install cors 回車安裝
  • app.js引入body-parsercors
const bodyParser = require('body-parser')
const cors = require('cors')
app.use(cors())
app.use(bodyParser.json())
複製代碼

測試

  • 在終端中npm start啓動API
  • API測試軟件 postman
  • 插入數據:

  • 查詢全部數據:
  • 查詢id爲5d9caaeec6c67361e0ac3f1a的數據:
  • 更改id爲5d9caaeec6c67361e0ac3f1a的數據:
  • 刪除id爲5d9caaeec6c67361e0ac3f1a的數據:
    -瀏覽器訪問數據:

  • 控制檯:

項目源碼

點我查看源碼數據庫

未經做者容許禁止轉載! express

相關文章
相關標籤/搜索