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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 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: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
// }
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
23天前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
2月前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
2月前
|
NoSQL 网络安全 MongoDB
MongoDB - 连接
10月更文挑战第12天
19 1
|
2月前
|
NoSQL 前端开发 JavaScript
Node.js 连接 MongoDB
10月更文挑战第20天
42 0
|
2月前
|
NoSQL 前端开发 JavaScript
Node.js 连接 MongoDB
10月更文挑战第9天
56 0
|
2月前
|
SQL JavaScript 关系型数据库
Node.js 连接 MySQL
10月更文挑战第9天
31 0
|
NoSQL JavaScript 关系型数据库
【Node.js实战】一文带你开发博客项目之登录(对接完毕,cookie、session、redis各司其职)
【Node.js实战】一文带你开发博客项目之登录(对接完毕,cookie、session、redis各司其职)
144 0
|
SQL 存储 前端开发
【NodeJS】归纳篇(三)Express | 链式操作 | cookie && session | 模板引擎 | Router | mysql
【NodeJS】归纳篇(三)Express | 链式操作 | cookie && session | 模板引擎 | Router | mysql
185 0
|
Web App开发 数据安全/隐私保护
|
数据安全/隐私保护 数据库 前端开发
下一篇
DataWorks