前端最基礎的就是 HTML+CSS+Javascript
。掌握了這三門技術就算入門,但也僅僅是入門,如今前端開發的定義已經遠遠不止這些。前端小課堂(HTML/CSS/JS
),本着提高技術水平,打牢基礎知識的中心思想,咱們開課啦(每週四)。前端
當咱們須要起一個服務器時,我猜大多數人的選擇是 Express (至少我看到的一些小工具是)。mongodb
今天咱們來安裝一下,而後結合上節課操做一下 MongoDB 。express
npm install express --save
依賴仍是蠻好裝的,裝好依賴咱們就能夠啓動咱們的服務了。npm
var express = require('express') var app = express() var server = app.listen(8088, () => { var host = server.address().address; var port = server.address().port; console.log('Example app listening at ', host, port); console.log('author: lilnong.top'); }) app.use(function(req, res, next){ res.send('www.lilnong.top') next(); })
中間件,監聽全部請求類型json
app.use(function(req, res, next){ console.log('use-1', req.ip) next(); })
中間件,監聽 /api
下的全部請求類型segmentfault
app.use('/api', function(req, res, next){ console.log('use-2-/api', req.ip) next(); })
監聽 /api
下 GET
請求類型api
app.get('/api', function(req, res, next){ console.log('use-2-/api', req.ip) next(); })
監聽 /api
下全部請求類型服務器
app.all('/api',function(req, res, next){ console.log('/api-all', req.ip) next(); })
默認 express 是不會解析 post 請求的 body。咱們須要增長一箇中間件微信
app.use(express.json()); app.use(express.urlencoded({ extended: false }));
// GET /task 獲取 task 列表 // GET /task/:id 查看某個具體的 task // POST /task 新建一個 task // PUT /task/:id 更新 id 爲 12 的 task // DELETE /task/:id 刪除 id 爲 12 的 task
const taskrouter = express.Router() taskrouter.route('/task') .post(async (req,res,next) => { console.log(req.method, req.url, req.params, req.query, req.body) let data = await dbo.collection('user').insert({...req.body,author: 'www.lilnong.top', time: new Date(), uuid: `${Date.now()}-${Math.random()}-${Math.random()}-${Math.random()}`}) res.send(data) // fetch(`/restful-api/task`,{ // method: 'post', // body: new URLSearchParams({cdate: new Date().toLocaleString()}), // }) // .then(v=>v.json()) // .then(v=>console.log('post restful-api/task',v)) }) .get(async (req,res,next) => { console.log(req.method, req.url, req.params, req.query, req.body) let data = await dbo.collection('user').find().toArray() res.send(data) // fetch(`/restful-api/task`) // .then(v=>v.json()) // .then(v=>console.log('get restful-api/task',v)) }) taskrouter.route('/task/:uuid') .get(async (req,res,next) => { console.log(req.method, req.url, req.params, req.query, req.body) let data = await dbo.collection('user').find({uuid: req.params.uuid}).toArray() res.send(data) // fetch(`/restful-api/task/1604050499531-0.7571477556104735-0.2684691266146757-0.455850836469736`) // .then(v=>v.json()) // .then(v=>console.log('get restful-api/task/1604050499531-0.7571477556104735-0.2684691266146757-0.455850836469736',v)) }) .put(async (req,res,next) => { console.log(req.method, req.url, req.params, req.query, req.body) let data = await dbo.collection('user').updateOne({uuid: req.params.uuid},{$set: {...req.body,utime: new Date()}}) res.send(data) // fetch(`/restful-api/task/1604050500761-0.5377497291744571-0.022071316247671557-0.336347246286103`,{ // method: 'put', // body: new URLSearchParams({udate: new Date().toLocaleString(), uauthor: 'www.lilnong.top'}), // }) // .then(v=>v.json()) // .then(v=>console.log('put restful-api/task',v)) }) .delete(async (req,res,next) => { console.log(req.method, req.url, req.params, req.query, req.body) let data = await dbo.collection('user').deleteOne({uuid: req.params.uuid}) res.send(data) // fetch(`/restful-api/task/1604050496565-0.660805544561031-0.5097297478722462-0.41065424039611176`,{ // method: 'delete', // }) // .then(v=>v.json()) // .then(v=>console.log('delete restful-api/task/1604050496565-0.660805544561031-0.5097297478722462-0.41065424039611176',v)) }) app.use('/restful-api', taskrouter)
let dbo var MongoClient = require('mongodb').MongoClient; MongoClient.connect( 'mongodb://localhost:27017/sf-mongodb', {}, async function(err, db){ if(err){ reject(err) return console.error(err) } dbo = db.db('sf-mongodb'); console.log('mongodb-success') } ) var express = require('express') var app = express() var server = app.listen(process.env.NODE_EXPRESS_MONGODB || 23456, () => { var host = server.address().address; var port = server.address().port; console.log('Example app listening at ', host, port); console.log('author: lilnong.top'); }) app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(function(req, res, next){ console.log('header', req.ip) next(); }) app.use('/api',function(req, res, next){ console.log('/api', req.ip) next(); }) app.get('/api',function(req, res, next){ console.log('/api-get', req.ip) next(); }) app.all('/api',function(req, res, next){ console.log('/api-all', req.ip) next(); }) // GET /task 獲取 task 列表 // GET /task/:id 查看某個具體的 task // POST /task 新建一個 task // PUT /task/:id 更新 id 爲 12 的 task // DELETE /task/:id 刪除 id 爲 12 的 task const taskrouter = express.Router() taskrouter.route('/task') .post(async (req,res,next) => { console.log(req.method, req.url, req.params, req.query, req.body) let data = await dbo.collection('user').insert({...req.body,author: 'www.lilnong.top', time: new Date(), uuid: `${Date.now()}-${Math.random()}-${Math.random()}-${Math.random()}`}) res.send(data) // fetch(`/restful-api/task`,{ // method: 'post', // body: new URLSearchParams({cdate: new Date().toLocaleString()}), // }) // .then(v=>v.json()) // .then(v=>console.log('post restful-api/task',v)) }) .get(async (req,res,next) => { console.log(req.method, req.url, req.params, req.query, req.body) let data = await dbo.collection('user').find().toArray() res.send(data) // fetch(`/restful-api/task`) // .then(v=>v.json()) // .then(v=>console.log('get restful-api/task',v)) }) taskrouter.route('/task/:uuid') .get(async (req,res,next) => { console.log(req.method, req.url, req.params, req.query, req.body) let data = await dbo.collection('user').find({uuid: req.params.uuid}).toArray() res.send(data) // fetch(`/restful-api/task/1604050499531-0.7571477556104735-0.2684691266146757-0.455850836469736`) // .then(v=>v.json()) // .then(v=>console.log('get restful-api/task/1604050499531-0.7571477556104735-0.2684691266146757-0.455850836469736',v)) }) .put(async (req,res,next) => { console.log(req.method, req.url, req.params, req.query, req.body) let data = await dbo.collection('user').updateOne({uuid: req.params.uuid},{$set: {...req.body,utime: new Date()}}) res.send(data) // fetch(`/restful-api/task/1604050500761-0.5377497291744571-0.022071316247671557-0.336347246286103`,{ // method: 'put', // body: new URLSearchParams({udate: new Date().toLocaleString(), uauthor: 'www.lilnong.top'}), // }) // .then(v=>v.json()) // .then(v=>console.log('put restful-api/task',v)) }) .delete(async (req,res,next) => { console.log(req.method, req.url, req.params, req.query, req.body) let data = await dbo.collection('user').deleteOne({uuid: req.params.uuid}) res.send(data) // fetch(`/restful-api/task/1604050496565-0.660805544561031-0.5097297478722462-0.41065424039611176`,{ // method: 'delete', // }) // .then(v=>v.json()) // .then(v=>console.log('delete restful-api/task/1604050496565-0.660805544561031-0.5097297478722462-0.41065424039611176',v)) }) app.use('/restful-api', taskrouter) app.use(function(req, res, next){ console.log('footer', req.ip) res.send('www.lilnong.top') next(); })