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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 MongoDB,通用型 2核4GB
简介: 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数据库的安装、配置、服务的启动、数据的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
相关文章
|
16天前
|
JavaScript 前端开发 关系型数据库
Node.js 连接 MySQL
Node.js 连接 MySQL
22 5
|
21天前
|
NoSQL 关系型数据库 Java
实时计算 Flink版产品使用问题之如何使用Flink MongoDB Connector连接MongoDB
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4天前
|
NoSQL MongoDB 数据库
MongoDB的GUI工具——Robo 3T连接远程数据库MongoDB
MongoDB的GUI工具——Robo 3T连接远程数据库MongoDB
4 0
|
29天前
|
NoSQL Shell 网络安全
MongoDB连接指南:从基础到进阶
MongoDB连接指南:从基础到进阶
|
1月前
|
JavaScript NoSQL 数据库连接
使用Nodejs + express连接数据库mongoose
【6月更文挑战第3天】这篇文章介绍了如何在Express应用中使用Mongoose连接MongoDB数据库。首先,需要创建一个`db.js`文件,然后通过`npm install mongoose`安装Mongoose驱动。接着,在应用中引入MongoDB模块,建立到数据库的连接。创建一个Mongoose schema定义数据模型,如用户信息表。最后,执行数据库操作,包括查询、插入、更新和删除文档,并在完成后关闭数据库连接。文中还提供了相关代码示例。
16 1
|
11天前
|
NoSQL JavaScript MongoDB
Node.js 连接 MongoDB
Node.js 连接 MongoDB
12 0
|
2月前
|
NoSQL Java 关系型数据库
Java基础教程(21)-Java连接MongoDB
【4月更文挑战第21天】MongoDB是开源的NoSQL数据库,强调高性能和灵活性。Java应用通过MongoDB Java驱动与之交互,涉及MongoClient、MongoDatabase、MongoCollection和Document等组件。连接MongoDB的步骤包括:配置连接字符串、创建MongoClient、选择数据库和集合。伪代码示例展示了如何建立连接、插入和查询数据。
|
2天前
|
NoSQL JavaScript 前端开发
JavaScript与数据库MongoDB的联动
JavaScript和MongoDB结合,构建Web应用的关键技术。MongoDB,作为NoSQL数据库,以其灵活性和高性能深受开发者喜爱。本文探讨两者的基本概念,如JavaScript在前端交互和后端数据处理的作用,MongoDB的文档存储和查询特性。通过Node.js和mongoose库,展示了连接数据库、定义数据模型及增删改查操作的代码示例。强调了性能优化(如索引、批量操作)和安全措施(如权限控制、数据加密)的重要性。最后,提供了一个简单的CRUD应用示例,涵盖Express和前端API调用。
|
24天前
|
存储 JSON NoSQL
【文档数据库】ES和MongoDB的对比
【文档数据库】ES和MongoDB的对比
148 1
|
5天前
|
NoSQL Java MongoDB
如何在Spring Boot应用中集成MongoDB数据库
如何在Spring Boot应用中集成MongoDB数据库