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
相关文章
|
9天前
|
前端开发 JavaScript 安全
node登陆接口权限配置cookie-parser、express-session
本文介绍了在Node.js中使用express-session和cookie-parser实现登录接口的权限配置,包括验证码接口的生成和自定义中间件的创建,用于验证用户权限。
12 0
node登陆接口权限配置cookie-parser、express-session
|
9天前
|
SQL JavaScript 关系型数据库
Node服务连接Mysql数据库
本文介绍了如何在Node服务中连接MySQL数据库,并实现心跳包连接机制。
23 0
Node服务连接Mysql数据库
|
9天前
|
JavaScript 前端开发
vue配合axios连接express搭建的node服务器接口_简单案例
文章介绍了如何使用Express框架搭建一个简单的Node服务器,并使用Vue结合Axios进行前端开发和接口调用,同时讨论了开发过程中遇到的跨域问题及其解决方案。
12 0
vue配合axios连接express搭建的node服务器接口_简单案例
|
21天前
|
SQL JavaScript 数据库
sqlite在Windows环境下安装、使用、node.js连接
sqlite在Windows环境下安装、使用、node.js连接
|
8天前
|
存储 NoSQL MongoDB
01 MongoDB的概述、应用场景、下载方式、连接方式和发展历史等
文章详细介绍了MongoDB的概览、应用场景、下载与连接方式,并涵盖了MongoDB的主要特性及其在数据存储方面的优势。
13 0
|
2月前
|
JavaScript 关系型数据库 MySQL
node连接mysql,并实现增删改查功能
【8月更文挑战第26天】node连接mysql,并实现增删改查功能
44 3
|
2月前
|
JavaScript NoSQL 前端开发
|
3月前
|
NoSQL MongoDB 数据库
MongoDB的GUI工具——Robo 3T连接远程数据库MongoDB
MongoDB的GUI工具——Robo 3T连接远程数据库MongoDB
181 0
|
4月前
|
NoSQL JavaScript MongoDB
Node.js 连接 MongoDB
Node.js 连接 MongoDB
35 0
|
8天前
|
存储 NoSQL 关系型数据库
非关系型数据库-MongoDB技术(二)
非关系型数据库-MongoDB技术(二)
下一篇
无影云桌面