1.node+express实用案列
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实用案列相关推荐
- d3中文案例_D3.js实现动态仪表盘案列
这次给大家带来D3.js实现动态仪表盘案列,D3.js实现动态仪表盘的注意事项有哪些,下面就是实战案例,一起来看一下. 本文介绍了D3.js实现简洁实用的动态仪表盘的示例,分享给大家,具体如下: 动态 ...
- node express Engine
node.js node.js 就是运行在服务端的 JavaScript. node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. node.js是一个事件驱动I/O服务 ...
- 文件分段上传案列(参考b站小野森森老师的课)
文件分段上传案列 1.什么是分片上传 分片上传,就是将所要上传的文件,按照一定的大小,分割成多个块,来进行分别上传,上传完成之后再由后端进行合并,也就是不断往一个文件里append,直到合并成一个完整 ...
- mysql第五章项目二_Todo List:Node+Express 搭建服务端毗邻Mysql – 第五章(第1节)
点击右上方红色按钮关注"web秀",让你真正秀起来 前言 万丈高楼平地起,我们的Todo List项目也是越来越结实了.Todo List的前面4章内容都是在为Client端开发, ...
- SpringSecurity的简单使用使用案列说明
SpringSecurity Spring Security是 Spring提供的安全认证服务的框架. 使用Spring Security可以帮助我们来简化认证 和授权的过程.官网:https://s ...
- JDBC的入门案列以及JDBC的对事务的管理
JDBC的概念 Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中 ...
- node+express学习日记
1.20160505 node+express直接返回一个html静态页面 2.20160505 使用字符串模式的路由路径 3.20160505 使用字符串的路由路径 4.20160505 路由匹配规 ...
- [Java基础]线程同步之卖票案列分析
案列: 卖票. 需求: 某电影院目前正在上映国产大片,共有100张票,而它有3个窗口卖票,请设计一个程序模拟该电影院卖票. 代码如下: package SellTicketPack;public cl ...
- 【HAVENT原创】Node Express API 通用配置
为什么80%的码农都做不了架构师?>>> ( 基于 Express 4.x ) 启动文件 /app.js: var express = require('express'); ...
最新文章
- 盘点路由协议之RIP协议及IGRP协议
- 微软Windows 8最新幻灯片泄露
- Docker(一):Docker入门教程
- 正则表达式中?的用法
- 用matlab抽样定理验证,MATLAB抽样定理验证.docx
- oracle outln用户,Oracle用户解锁
- Linux当前终端走代理ip
- 递归、搜索、贪心、动态规划的区别
- [转载] python模板字符串和格式化字符串
- [CF55D]Beautiful Number 题解
- ZMQ == 服务端创建,接受请求的过程
- 银行卡号 归属地大全
- 如何正确设置同时使用内外网
- docker安装cboard
- 472. 连接词(每日一难phase2--day24)
- Spring框架学习(十)SSM框架整合
- u盘pe启动盘怎么制作?
- 商场管理系统原创代码
- IT人才外包服务的好处?
- 【数据分析师_04_Python数据分析基础】006_Pandas时序分析(df.tz_localize 时区位置、df.tz_convert 时区转换)
热门文章
- 计算机毕业设计springboot家庭支出网页管理系统668mf源码+系统+程序+lw文档+部署
- 微信不小心删除的好友和群聊,如何偷偷的加回来?
- 58页智慧工地云平台建设方案
- 五Redis 有序集合
- 淡黄的长裙,蓬松的头发?拿什么拯救你,我的项目
- 计算机在职研究生是学历教育吗,2019年报考计算机技术在职研究生毕业之后为什么还是本科学历呢...
- 微信小程序开发之——bindtap点击无响应
- 富平春天服饰 怎么样呀
- C#Winform中打印预览时设置横向打印
- oracle全表扫过程讲解,CSS_浅谈存取Oracle当中扫描数据的方法,1) 全表扫描(Full Table Scans, FTS) - phpStudy...