node连接mongodb,ejs,cookie基础使用

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:[email protected]: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绑定数据

<%=绑定的数据%>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5PCE5lPr-1651327740390)(image/image-20220428153726760.png)]

html中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RTkk6Sjz-1651327740392)(image/image-20220428153954876.png)]

ejs绑定对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IT6AHOIs-1651327740393)(image/image-20220428165136454.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hwojjx6v-1651327740394)(image/image-20220428191027272.png)]

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中 循环语句要写在<%%>里面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q6RinPzw-1651327740394)(image/image-20220428193216569.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4iPcQSTO-1651327740395)(image/image-20220428193609514.png)]

循环语句

只含数组的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Plqlw3xo-1651327740395)(image/image-20220428193808995.png)]

既含数组又含对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b6mewQvr-1651327740395)(image/image-20220428194253027.png)]

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”})

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pZ3piMBg-1651327740396)(image/image-20220429102958528.png)]4

    此时aaa.itying.com可替换127.0.0.1

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CY7pnRaJ-1651327740397)(image/image-20220429103231061.png)]

    (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

​ // }

猜你喜欢

转载自blog.csdn.net/m0_63338686/article/details/124519848
今日推荐