【重點突破】—— Nodejs+Express+MongoDB的使用基礎
阿新 • • 發佈:2019-01-22
查詢 port 實體 其中 html文本 text 前言 star fff
前言:最近學習vue和react的高階項目,都需要和Nodejs+Express+MongoDB結合實現全棧開發。這裏結合實例Demo和所學項目集中總結一下這部分服務端的基礎知識。
一、Express+mongodb開發web後臺接口Demo
Express開發web接口
- Express:基於nodejs,快速、開放、極簡的web開發框架 【官網】
- 安裝express
npm install express --save
- 新建server目錄:server.js編寫後端代碼
const express = require(‘express‘);
-
查看調試頁面:瀏覽器訪問localhost:9093(每次更新server配置後必須重新啟動)
-
監聽路由和響應內容,使用nodemon自動重啟
npm install -g nodemon
啟動應用: nodemon server.js
- 其它特性
- app.get、app.post分別開發get和post接口
- app.use使用模塊
- res.send、res.json、res.sendfile響應不同的內容(分別返回Html文本、JSON、文件)
Mongodb:非關系型數據庫
- 官網:https://www.mongodb.com/ 下載安裝mongodb 【博客】
- 啟動服務:net start MongoDB
- 關閉服務:net stop MongoDB
- 安裝mongoose
npm install mongoose --save
-
通過mongoose操作mongodb存儲的就是json,相當於mysql來說,要容易的多
Mongoose基礎使用
- Connect連接數據庫
const mongoose = require(‘mongoose‘) //鏈接mongo 並且使用react這個集合 const DB_URL = ‘mongodb://127.0.0.1:27017/imooc‘ //前提:開啟Mongodb服務 mongoose.connect(DB_URL) mongoose.connection.on(‘connected‘, function(){ console.log(‘mongo connect success‘) })
- 定義文檔模型,Schema和model新建模型
- Mongoose重要概念
- Schema: 一種以文件形式存儲的數據庫模型骨架,不具備數據庫的操作能力
- Model: 由Schema發布生成的模型,具有抽象屬性和行為的數據庫操作對
- Entity: 由Model創建的實體,它的操作也會影響數據庫
- Schema→Model→Entity的關系
- Schema生成Model
- Model創造Entity
- Model和Entity都可對數據庫操作造成影響,但Model比Entity更具操作性
Mongoose文檔類型
- String, Number等數據結構
//類似於mysql的表 mongo裏有文檔、字段的概念 const User = mongoose.model(‘user‘, new mongoose.Schema({ user: {type:String, require:true}, age: {type:Number, require:true} }))
- 定create、remove、update分別用來增、刪、改的操作
- 新增數據
//新增數據 User.create({ user: ‘xiaohong‘, age: 10 }, function(err, doc){ if(!err){ console.log(doc) }else{ console.log(err) } }) app.get(‘/data‘, function(req, res){ //查詢User全部數據 User.find({}, function(err, doc){ res.json(doc) }) })
- 刪除數據
//刪除數據 User.remove({age:10},function(err, doc){ console.log(doc) })
- 更新數據
//更新數據 User.update({‘user‘:‘xiaoming‘},{‘$set‘:{age: 26}}, function(err, doc){ console.log(doc) })
- find和findOne用來查詢數據
- find:查找到的是數組,其中可包含多條數據對象
//查詢數據 User.find({age:18}, function(err, doc){ res.json(doc) })
-
findOne:查找到的是數據對象本身
//查詢數據 User.findOne({user:‘xiaoming‘}, function(err, doc){ res.json(doc) })
Demo實例代碼
/** * express Demo */ const express = require(‘express‘); const mongoose = require(‘mongoose‘) //鏈接mongo 並且使用react這個集合 const DB_URL = ‘mongodb://127.0.0.1:27017/imooc‘ mongoose.connect(DB_URL) mongoose.connection.on(‘connected‘, function(){ console.log(‘mongo connect success‘) }) //類似於mysql的表 mongo裏有文檔、字段的概念 const User = mongoose.model(‘user‘, new mongoose.Schema({ user: {type:String, require:true}, age: {type:Number, require:true} })) // 新增數據 // User.create({ // user: ‘xiaolan‘, // age: 18 // }, function(err, doc){ // if(!err){ // console.log(doc) // }else{ // console.log(err) // } // }) //刪除數據 // User.remove({user: ‘xiaolan‘},function(err, doc){ // console.log(doc) // }) //更新數據 // User.update({‘user‘:‘xiaoming‘},{‘$set‘:{age: 26}}, function(err, doc){ // console.log(doc) // }) //新建app模塊 const app = express() app.get(‘/‘, function(req, res){ res.send(‘<h1>Hello world</h1>‘) //發送Html }) app.get(‘/data‘, function(req, res){ //查詢數據 User.find({}, function(err, doc){ res.json(doc) }) // res.json({name:‘imooc React App‘,type:‘IT‘}) //發送json }) app.listen(9093, function(){ console.log(‘Node app start at port 9093‘) })View Code
二、Express和mongodb結合
1、mongodb獨立工具函數
2、express使用body-parser支持post參數
3、使用cookie-parser存儲登錄信息cookie
註:轉載請註明出處
【重點突破】—— Nodejs+Express+MongoDB的使用基礎