用Node.js+express+cloud MongoDB Atlas建立API介面
阿新 • • 發佈:2019-12-31
介紹
- 本文用 node.js express框架連線 cloud MongoDB Atlas 搭建API介面
- 本文側重於cloud MongoDB Atlas
建立專案
- 建立一個資料夾 用VScode編譯器開啟
- 選擇資料夾在終端開啟
在終端中輸入 npm init
然後一直回車 最後確認
node.js 安裝 express 輸入npm install express nodemon
回車
- 完成後開啟 package.json 檢查是否安裝成功 安裝成功如下圖:
- 安裝成功後 修改 scripts 修改為
"start": "nodemon app.js"
建立API埠
在當前目錄下 建立 app.js 檔案
const express = require("express")
const app = express()
app.get('/',(req,res) => {
res.send("Hello World")
})
//埠
app.listen(3000)
複製程式碼
儲存 在終端中 輸入 npm start
開啟瀏覽器 開啟 https://localhost:3000
- node.js安裝 mongoDB 在終端中
ctrl+c
終止批處理操作 再輸入npm install mongoose
回車安裝
註冊與建立cloud MongoDB Atlas
- 點選右上角
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:[email protected]/userDB?retryWrites=true&w=majority
複製程式碼
- node.js 安裝 doenv 輸入
npm install doenv
回車安裝 - 安裝完成後 在根目錄新增檔案
.env
在檔案中寫入連線資料庫的url
DB_CONNECTION=mongodb+srv://user123:[email protected]/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,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檔案下寫入增刪改查程式碼
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('/',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',res) => {
try {
const findPost = await Post.findById(req.params.postId)
res.json(findPost)
} catch (err) {
res.json({ message: err })
}
})
//刪除資料
router.delete('/:postId',res) => {
try {
const removePost = await Post.remove({ _id: req.params.postId })
res.json(removePost)
} catch (err) {
res.json({ message: err })
}
})
//修改資料
router.patch('/:postId',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-parser
與cors
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
的資料: -瀏覽器訪問資料:
- 控制檯:
專案原始碼
未經作者允許禁止轉載!