nodejs连接mongodb
无验证权限
//引入mongodb下的mongdbClient es6 const {MongoClient} = require('mongodb') //或 const MongoClient = require('mongodb').MongoClient //定义要连接的地址(可以在cmd启动服务成功时查看) const url = 'mongodb://127.0.0.1:27017' //定义要连接的数据库 const dbName = 'shop' //实例化MongoClient 传入数据库连接地址(MongoClient是mongodb下的一个对象) const client = new MongoClient(url,) //连接数据库 client.connect((err)=>{ if(err){ console.log(err); return } console.log("数据库连接失败"); let db = client.db(dbName) //(随后可以使用db来操作数据库) //使用完数据库要关闭 client.close() })
验证权限
//es语法 引入mongodb下面的mongodbClient模块 // const MongoClient = require('mongodb').MongodbClient const { MongoClient } = require('mongodb') //定义要连接的地址 shop3为用户名,admin888密码 shop数据库 const url = 'mongodb://shop3:admin888@127.0.0.1:27017/shop' //定义要操作的数据库 const dbName = 'shop' //实例化MongoClient 传入数据库连接地址 MongoClient.connect(url, function(err, client) { if(err){ console.log(err); return } console.log("数据库连接成功"); let db = client.db(dbName) //查看集合中的数据 db.collection('shop3').find({}).toArray((err,data)=>{ console.log(data) client.close() }) // ------------------增加数据 db.collection('c1').insertOne({"username":"nodejs操作mongodb","age":17},(err,data)=>{ if(err){ console.log(err); return }else{ console.log('增加成功'); console.log(data); } }) // =------------------修改数据 db.collection('c1').updateOne({'food':'水3',},{'$set':{'food':'米饭'}},(err,data)=>{ if(err){ console.log(err+'修改失败'); } console.log('修改成功'+data); //数据库操作完成后要关闭数据库 client.close() }) // -------------------删除数据 只删除了一条 db.collection('c1').deleteOne({'username':'nodejs操作mongodb'},(err,data)=>{ if(err){ console.log('删除失败'); } console.log('删除成功'+data); client.close() }) //---------------------删除多条数据 db.collection('c1').deleteMany({'friut':'pear'},(err,data)=>{ if(err){ console.log('删除失败'); }//若删除的数据书写错 则因其未找到,不会报错 console.log('删除成功'+data); client.close() }) })
ejs基础使用
ejs绑定数据
<%=绑定的数据%>
html中
ejs绑定对象
ejs绑定html
//js代码中 app.get('/',(err,res)=>{ let article = '<h3>我是h3</h3>' res.render('news',{ article:article }) }) //news.ejs中 ------解析数据 输出h3格式的‘我是h3’ <p><%-article%></p> -----直接写数据 输出'<h3>我是h3</h3>' <p><%=article%></p>
条件判断
news.ejs中 循环语句要写在<%%>里面
循环语句
只含数组的
既含数组又含对象
ejs中引入其他ejs文件
在需要引入文件的ejs body最下方
<%- include(‘需要引入的ejs文件名’)%>
<%- include(‘footer.ejs’)%>
ejs文件将后缀’ejs’改为’html’
- 引入ejs
const app =express()\
const ejs = require(‘ejs’)
- //注册html模板引擎
app.engine(‘html’,ejs.__express)
- 将模板引擎转换为html
app.set(‘view engine’,‘html’)
- 改变后缀
引入css 静态托态文件
app.use(express.static(‘static’))
//现在就可以static目录下的文件就可以访问了
//在html/ejs中引入css即可
cookie的基础使用
- 使用cookie需要使用cookie-parser模块
//要先在目录下 下载cookie-parser
const cookie = require(‘cookie-parser’)设置cookie
(1)设置cookie过期时间 maxAge
res.cookie(‘username’,‘zhangsan’,{maxAge:10006060})
(2)设置cookie在指定网址下生效 只有在/article下生效
res.cookie(‘username’,‘zhangsan’,{path:‘/article’})
(3)多个域名共享cookie 只有.itying.com结尾的域名才能共享cookie aaa.itying.com bbb.itying.com
res.cookie(‘username’,‘zhangsan’,{maxAge:10006060,domain:“.itying.com”})
此时aaa.itying.com可替换127.0.0.1
(4)cookie加密
//1.配置中间件的时候需要传参 cookie加密密钥
app.use(cookieParser(‘123456’))
//2.设置cookie的时候配置signed属性
res.cookie(‘username’,‘zhangsan’,{maxAge:10006060,signed:true})
//3.signedCookies调用配置的cookie
console.log(req.signedCookie);
app.get('/',(req,res)=>{ //设置cookie res.cookie('username','zhangsan',{maxAge:1000*60*60}) }) app.get("/article",(req,res)=>{ //获取cookie let username = req.cookies.username res.send("新闻"+username) }) //加密后的cookie获取 若不加密 直接在控制台可以改变cookie的value app.get("/login",(req,res)=>{ //获取cookie let username = req.signedCookies.username res.send("新闻"+username) })
使用querystring转换格式
//name=zs3&age=3 从页面获取的数据 需要转化格式
let body = querystring.parse(req.body) // { // “name”:‘zs3’, // ‘age’:13 // }