前言:最近學習vue和react的高階項目,都須要和Nodejs+Express+MongoDB結合實現全棧開發。這裏結合實例Demo和所學項目集中總結一下這部分服務端的基礎知識。html
1、Express+mongodb開發web後臺接口Demovue
Express開發web接口node
npm install express --save
const express = require('express'); //新建app模塊 const app = express() app.get('/', function(req, res){ res.send('<h1>Hello world</h1>') //發送Html }) app.get('/data', function(req, res){ res.json({name:'imooc React App',type:'IT'}) //發送json }) app.listen(9093, function(){ //自定義監聽端口 console.log('Node app start at port 9093') })
查看調試頁面:瀏覽器訪問localhost:9093(每次更新server配置後必須從新啓動)mysql
監聽路由和響應內容,使用nodemon自動重啓react
npm install -g nodemon
啓動應用: nodemon server.js web
Mongodb:非關係型數據庫sql
npm install mongoose --save
經過mongoose操做mongodb存儲的就是json,至關於mysql來講,要容易的多 mongodb
Mongoose基礎使用數據庫
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') })
Mongoose文檔類型express
//相似於mysql的表 mongo裏有文檔、字段的概念 const User = mongoose.model('user', new mongoose.Schema({ user: {type:String, require:true}, age: {type:Number, require:true} }))
//新增數據 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) })
//查詢數據 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') })
2、Express和mongodb結合
一、mongodb獨立工具函數
二、express使用body-parser支持post參數
三、使用cookie-parser存儲登陸信息cookie
注:轉載請註明出處