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
// }