使用node和express+mongodb實現資料增刪改功能
2018即將過去,2019即將來臨,前端技術不斷在在更新,學的東西越來越多。我們只有不斷的學習,才不能被淘汰。在前後端分離的一個時代,後端提供介面,前端呼叫介面,邏輯判斷,每個都是獨立的工作。如果自己在空餘的時間,想學習新的知識,卻沒有好的介面,只能寫寫假的json資料。或者網上開源的資料庫,mock,野狗資料庫,firebase,或者使用本地的json-server搭建本地資料庫使用也是完全沒有問題的,也可以正常的實現資料的介面請求。
今天小編就寫一遍關於node寫介面的文件,會從環境搭建,資料庫連結,資料模型,介面文件以及到測試,一步一步的來,盡最大可能寫好,讓每一位讀者都能看懂,文章可能過程,希望慢慢理解
2018最後的一篇部落格,希望在2019繼續努力
1.準備工作
- postman介面測試工具,
- node安裝
- mlab資料儲存
- mongodb資料庫
2.node + express環境搭建
2.1環境搭建之前,首先要檢查自己電腦是否安裝node環境,如果沒有安裝,先安裝node環境.
2.2在自己電腦建立一個目錄檔案,開啟自己終端,先進行初始化 cnpm init(在這裡使用了cnpm國內映象,如果沒有安裝,請自行安裝cnpm);
初始化之後會出現下面這個介面,會在我們的檔案中生成一個package.json檔案;
2.3在自己根目錄建立一個入口檔案,app.js檔案或者通過終端命令touch app.js建立一個檔案,
2.4這時候我們可以搭建伺服器環境,但是需要依賴express,這時候我們就需要安裝express
cnpm install express
2.5工作環境準備好之後,需要在我們的入口檔案引入express,並建立一個app實列,請看下面,
2.5.1:port是我們的埠號,app.listen是監聽埠號執行
2.5.2:然後通過node app.js執行,檢視伺服器是否正常執行成功,然後在瀏覽器出入http://localhost:5000,就可以檢視執行的結果了
2.6但是我們每次修改程式碼的時候都要重新執行node app.js,這個時候我們只需要安裝nodemon,監聽node變化的一個工具
cnpm install nodemon -g 在這裡是全域性安裝
2.7:配置package.json啟動命令,在開發環境的時候,直接可以通過cnpm run app來監聽每次修改node的變化,nodemon我們已經全域性安裝過了,可以在任何地方都可以使用,只要我們每次修改程式碼都會發生變化,這樣我們就不會手動輸入命令了
3.資料庫mlab建立
3.1:mlab是MongoDB提供的免費儲存的資料庫,使用的時候必須先註冊,才可以使用,這個mlab需要FQ註冊,註冊登入之後會出現下面的介面
3.2然後點選Create new 建立 》》》》 然後選擇下面的兩個,amazon和SANDBOX最後點選右下角CONTINUE,會跳轉下一步
3.3在這個介面選擇國家地區,選擇US EAST和Europe都可以,然後點選CONTINUE,會跳轉下一步
3.4在這個介面,需要我們輸入一個名字,名字隨便輸入,然後點選CONTINUE,會跳轉下一步,
3.5在下一個頁面,然後在點選SUBMIT ORDER,這樣我們就建立好一個數據庫,然後點選進入資料庫中
3.6進入我的資料庫中,黃色警告提示我們需要建立一個使用者資訊,也就是我們最後連結的使用者名稱和密碼,點選add會彈出一個框,然後我門新增使用者名稱和密碼就可以了,最後點選CREATE,這樣我們的資料庫就已經建立完成了,接下來我們可以使用node連結我們的資料庫了
4.node連結MongoDB
4.1安裝mongoose連結資料庫
cnpm install mongoose
4.2然後在你的入口檔案引入(app.js),
const mongoose require('mongoose')
4.3在我們的根目錄建立一個config檔案,在confing中建立一個db.js檔案,這個檔案存放我們的資料庫的地址,連線資料庫的地址放在一個單獨的檔案,把我們伺服器的地址引入過了就行了,修改使用者名稱和密碼就行了,
4.4使用mongoose連結資料庫,在我們的根目錄引入config下面的db檔案。然後通過mongoose連結資料,最後在控制檯可以看到我們已經連結成功了,到現在為止,資料已經連結配置好了,接下來接開始寫介面
5.介面路由搭建和資料模型
5.1在我們的根目錄下建立一個router >>> api >>> useinfo.js檔案,這個用於存放我們的請求介面的路由檔案;
5.1.1在userinfo檔案中引入express和路由,先寫一個get請求方法,
5.2.2需要在我們的app.js檔案引入userinfo.js檔案,並使用router中介軟體,不然不會生效
/api/userinfo:這個相當於我們訪問的介面地址
//引入userinfo.js const userinfo = require('./router/api/userinfo') //使用router中介軟體 app.use('/api/userinfo',userinfo)
然後就可以在瀏覽器輸入http://localhost:5000/api/userinfo
5.2postman介面測試工具使用
5.2.1我們已經寫好一個get的測試請求,接下來我們進行測試,我們可以通過postman這個工具進行測試,下載好之後需要登入註冊,
下載好之後開啟這個工具,第一步輸入我們的地址,點選send,就能看到我們請求的結果是否正確了
5.3建立資料模型
5.3.1建立我們的資料模型用於存放資料欄位名。在根目錄建立models檔案,然後建立Userinfo.js檔案,用於寫資料欄位模型。
建立了name,age,sex,address,date幾個欄位名,(使用什麼欄位建立什麼欄位,在這裡先使用這麼多)
mongoose.Schema是一個MongoDB物件建模工具,
每一個Schema對應一個mongoDB collection 並且在那個collection裡面定義了documents的模型。
5.4編寫路由介面,實現資料的新增,刪除,修改功能
在我們路由檔案userinfo引入資料模型Userinfo檔案,這樣我們就可以查詢資料庫中是否有這些欄位名了
const Userinfo =require('../../models/Userinfo')
5.4.1新增使用者資訊
新增使用者資訊肯定需要使用post去新增使用者資訊了,這時候我們需要安裝第三方依賴body-parser
cnpm install body-parser
5.4.2在安裝完之後,需要在app.js檔案引入,並使用,這樣我們就可以使用post進行資料儲存了
const bodyParser = require('body-parser') //使用body-parser中介軟體 app.use(bodyParser.urlencoded({extended:false})); app.use(bodyParser.json());
5.4.3新增資料介面,。先建立一個空的對,判斷資料是否存在,如果不存在的話,通過new Userinfo新增資料庫中,Userinfo就是我們上面引入的模型
// $route GET api/userinfo/add // @desc 新增使用者資料 // @access public router.post('/add',(req,res) => { const UserName = {}; if(req.body.name) UserName.name = req.body.name; if(req.body.sex) UserName.sex = req.body.sex; if(req.body.age) UserName.age = req.body.age; if(req.body.address) UserName.address = req.body.address; new Userinfo(UserName).save().then(user => { res.json(user); }); })
5.4.4使用postman介面測試,請求介面型別是post請求,輸入我們的介面地址,新增欄位,點選send,就可以看到我們新增資料的欄位了。
5.5獲取所有資料
5.5.1通過get請求,獲取資料庫中所有的資料資訊
// $route GET api/userinfo // @desc 獲取所有的資料 // @access public //find()是mongodb的資料庫語法 router.get("/", (req,res) => { Userinfo.find().then(user => { if(!user) { return res.status(400).json("沒有任何資料存在") } return res.json(user) }).catch(err => { return res.status(404).json(err) }) });
5.5.1通過postman測試介面,http://localhost:5000/api/userinfo,就可以獲取到我們資料庫中所有的資訊了,
5.6獲取單個使用者資訊
5.6.1:通過根據使用者的id去獲取單個使用者的資訊
// $route GET api/userinfo/:id // @desc 獲取單個的資料 // @access public router.get('/:id',(req,res) => { Userinfo.findOne({_id:req.params.id}).then(user => { if(!user) { return res.status(400).json("沒有任何資料存在") } return res.json(user) }).catch(err => { return res.status(404).json(err) }) })
5.6.2通過postman測試介面,http://localhost:5000/api/userinfo/5c27929b2a87821914f8b195,就可以獲取到我們資料庫中所需要的資訊
5.7編輯使用者資訊
5.7.1編輯使用者資訊,也是根據使用者的id去更新資料,通過monoose提供的findByIdAndUpdate去更新資料庫
// $route GET api/userinfo/exit/:id // @desc 編輯使用者資訊 // @access public router.post('/exit/:id',(req,res) => { const UserName = {}; if(req.body.name) UserName.name = req.body.name; if(req.body.sex) UserName.sex = req.body.sex; if(req.body.age) UserName.age = req.body.age; if(req.body.address) UserName.address = req.body.address; //更新資料 Userinfo.findByIdAndUpdate({ _id: req.params.id }, { $set: UserName }, { new: true }) .then(user => { if (!user) { return res.status(400).json("資料不存在"); } res.json(user); }) .catch(err => { return res.status(404).json(err); }); })
5.7.2這是我們更新第一個欄位的使用者資訊,把張三的名字改成張飛,在postman中可以看到我們成功更新資料
5.8刪除使用者資訊
5.8.1在這裡,我們只刪除根據使用者的id刪除,不會實現全部刪除。
// $route GET api/userinfo/delete/:id // @desc 刪除使用者資訊 // @access public router.delete('/delete/:id',(req,res) => { Userinfo.findByIdAndRemove({_id:req.params.id}).then(user => { user.save().then(user => { res.json(user) }) }).catch(err => { return res.status(404).json(err) }) })
5.8.2我們通過postman測試http://localhost:5000/api/userinfo/delete/5c27929b2a87821914f8b195,成功姓名為張飛的資料刪除成功
以上都是我們使用node+express實現的資料的新增,刪除,修改功能。希望這篇部落格能夠幫助你。提前祝願2019前端小夥伴元旦快樂,2019更上技術更上一層樓。