1.注册服务器

const express=require('express')
const path=require('path')
const db=require('./db/connect')
const app=express()app.listen(3000,()=>{console.log('server running')
})

2.路由分发

app.use('/food',(req,res,next)=>{//设置登录验证console.log(req.body)if(sess!==null){if(sess.session.login){next()}else{res.send({err:-110,msg:'cookie过期'})}}else{res.send({err:-110,msg:'请先登录'})}
//在router文件
const express=require('express')
const Food=require('../db/model/foodModel')
const router=express.Router()router.post('/add',(req,res)=>{// let data={//     name:'苹果',//     price:'456',//     desc:'超好吃',//     typename:'水果',//     typeid:1,//     img:'/public/img/640.jpg'// }let {name,price,desc,typename,typeid,img}=req.bodyconsole.log(name)//判断参数Food.insertMany({name,price,desc,typename,typeid,img}).then(data=>{res.send({err:0,msg:'添加成功'})}).catch(err=>{console.log(err)res.send({err:-1,msg:'添加失败'})})
})

3.中间件

//中间件 解析post请求
const body =require('body-parser')
app.use(body.json())
app.use(body.urlencoded({extended:true}))
//express本身自带的
app.use(express.urlencoded({ extended: false }))
app.use(express.json())

4.静态目录

//静态资源目录
app.use('/public',express.static(path.join(__dirname,'static')))

5.跨域

//跨域问题
const cors=require('cors')
app.use(cors())

6.设置接口权限


//设置接口权限
const cookie=require('cookie-parser')
const session=require('express-session')
app.use(session({secret:'sjfsdkjflajf',//为了安全性设置seCRETcookie:{maxAge:60*1000*24},//设置过期时间resave:true,saveUninitialized:false,//每次请求都会设置新的session cookie
}))
//清除cookie
app.post('/out',(req,res)=>{sess.session.destroy()//删除保存的sessionres.send({err:0,msg:'退出'})console.log('ok')
})
//在userRouter中
router.post('/login',(req,res)=>{let {us,ps}=req.bodyif(!us||!ps){res.send({err:-1,msg:'参数错误'})}User.find({us,ps}).then(data=>{if(data.length>0){//将cookie(用户信息)保存到session中req.session.login=truereq.session.name=usconsole.log(req.session)res.send({err:0,msg:'登录成功'})}else{return res.send({err:-1,msg:'用户名密码不正确'})}//console.log(data)}).catch(err=>{return res.send({err:-1,msg:'内部错误'})})
})

7.模块导出

module.exports=router

8.上传图片

//上传图片
const filerouter=require('./router/filerouter')
app.use('/file',filerouter)//在filerouter中
const express=require('express')
const router=express.Router()const multer=require('multer')
//图片过滤器
var storage=multer.diskStorage({destination:function(req,file,cb){//指定文件路径cb(null,'./static/img')},filename:function(req,file,cb){指定文件名console.log('-----',file)let ext=file.originalname.split('.')[1]//let name=file.originalname.split('.')[0]let name=new Date().getTime()+parseInt(Math.random()+999)cb(null,`${name}.${ext}`)}
})
var upload=multer({storage:storage})//hehe图片的key值
router.post('/upload',upload.single('hehe'),(req,res)=>{console.log(req.file)let {size,mimetype,path}=req.filelet types=['jpg','jpeg','png','gif']let tmtype=mimetype.split('/')[1]if(size>500000){return res.send({err:-1,msg:'尺寸过大'})}else if(types.indexOf(tmtype)==-1){return res.send({err:-2,msg:'上传类型错误'})}else{res.send({err:0,msg:'上传ok',data:'/public/img/'+req.file.filename})}})module.exports=router

9.mongodb连接

//连接数据库
const db=require('mongoose')
db.connect('mongodb://localhost/2021',{useNewUrlParser:true})//连接对象
var db1=db.connectiondb1.on('error',console.error.bind(console,'connection error:'))
db1.once('open',function(){console.log('db ok')
})

10.mongodb模型

const db=require('mongoose')
var foodSchema=new db.Schema({name:{type:String,required:true},price:{type:String,required:true},desc:{type:String,required:true},typename:{type:String,required:true},typeid:{type:Number,required:true},img:{type:String,required:true}
})//将Schema转为数据模型
var Food=db.model('foods',foodSchema)//数据对象跟集合关联
module.exports=Food

11.设置token

const jwt=require('jsonwebtoken')let screat='sffadfsdgsdfgsdbsbdd'
function createToken(params){params.time=Date.now()//产生一个tokenreturn  jwt.sign(params,screat)//默认hs265加密
}//验证token的合法性
function checkToken(token){return new Promise((resovle,reject)=>{jwt.verify(token,screat,(err,data)=>{if(err){reject('token验证失败')}resovle(data)})})
}
module.exports={createToken,checkToken
}

11.cookie的使用

const cookie=require('cookie-parser')
//使用cookie解释
app.use(cookie())
//生成cookie保存到浏览器
const res1=res.cookie('userid',user._id,{maxAge:1000*60*60*24})
//获取cookie
let userid=req.cookies.userid

12.访问HTML文件

const express = require('express');
const path = require('path');
const app = express();app.get('/index',(req,res)=>{res.sendFile(path.join(__dirname,'view/index.html'))
})app.listen(3000,()=>{console.log('Server is running');
})

1.node+express实用案列相关推荐

  1. d3中文案例_D3.js实现动态仪表盘案列

    这次给大家带来D3.js实现动态仪表盘案列,D3.js实现动态仪表盘的注意事项有哪些,下面就是实战案例,一起来看一下. 本文介绍了D3.js实现简洁实用的动态仪表盘的示例,分享给大家,具体如下: 动态 ...

  2. node express Engine

    node.js node.js 就是运行在服务端的 JavaScript. node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. node.js是一个事件驱动I/O服务 ...

  3. 文件分段上传案列(参考b站小野森森老师的课)

    文件分段上传案列 1.什么是分片上传 分片上传,就是将所要上传的文件,按照一定的大小,分割成多个块,来进行分别上传,上传完成之后再由后端进行合并,也就是不断往一个文件里append,直到合并成一个完整 ...

  4. mysql第五章项目二_Todo List:Node+Express 搭建服务端毗邻Mysql – 第五章(第1节)

    点击右上方红色按钮关注"web秀",让你真正秀起来 前言 万丈高楼平地起,我们的Todo List项目也是越来越结实了.Todo List的前面4章内容都是在为Client端开发, ...

  5. SpringSecurity的简单使用使用案列说明

    SpringSecurity Spring Security是 Spring提供的安全认证服务的框架. 使用Spring Security可以帮助我们来简化认证 和授权的过程.官网:https://s ...

  6. JDBC的入门案列以及JDBC的对事务的管理

    JDBC的概念 Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中 ...

  7. node+express学习日记

    1.20160505 node+express直接返回一个html静态页面 2.20160505 使用字符串模式的路由路径 3.20160505 使用字符串的路由路径 4.20160505 路由匹配规 ...

  8. [Java基础]线程同步之卖票案列分析

    案列: 卖票. 需求: 某电影院目前正在上映国产大片,共有100张票,而它有3个窗口卖票,请设计一个程序模拟该电影院卖票. 代码如下: package SellTicketPack;public cl ...

  9. 【HAVENT原创】Node Express API 通用配置

    为什么80%的码农都做不了架构师?>>>    ( 基于 Express 4.x ) 启动文件 /app.js: var express = require('express'); ...

最新文章

  1. 盘点路由协议之RIP协议及IGRP协议
  2. 微软Windows 8最新幻灯片泄露
  3. Docker(一):Docker入门教程
  4. 正则表达式中?的用法
  5. 用matlab抽样定理验证,MATLAB抽样定理验证.docx
  6. oracle outln用户,Oracle用户解锁
  7. Linux当前终端走代理ip
  8. 递归、搜索、贪心、动态规划的区别
  9. [转载] python模板字符串和格式化字符串
  10. [CF55D]Beautiful Number 题解
  11. ZMQ == 服务端创建,接受请求的过程
  12. 银行卡号 归属地大全
  13. 如何正确设置同时使用内外网
  14. docker安装cboard
  15. 472. 连接词(每日一难phase2--day24)
  16. Spring框架学习(十)SSM框架整合
  17. u盘pe启动盘怎么制作?
  18. 商场管理系统原创代码
  19. IT人才外包服务的好处?
  20. 【数据分析师_04_Python数据分析基础】006_Pandas时序分析(df.tz_localize 时区位置、df.tz_convert 时区转换)

热门文章

  1. 计算机毕业设计springboot家庭支出网页管理系统668mf源码+系统+程序+lw文档+部署
  2. 微信不小心删除的好友和群聊,如何偷偷的加回来?
  3. 58页智慧工地云平台建设方案
  4. 五Redis 有序集合
  5. 淡黄的长裙,蓬松的头发?拿什么拯救你,我的项目
  6. 计算机在职研究生是学历教育吗,2019年报考计算机技术在职研究生毕业之后为什么还是本科学历呢...
  7. 微信小程序开发之——bindtap点击无响应
  8. 富平春天服饰 怎么样呀
  9. C#Winform中打印预览时设置横向打印
  10. oracle全表扫过程讲解,CSS_浅谈存取Oracle当中扫描数据的方法,1) 全表扫描(Full Table Scans, FTS) - phpStudy...