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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 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
// }
相关文章
|
7月前
|
存储 NoSQL Linux
微服务2——MongoDB单机部署4——Linux系统中的安装启动和连接
本节主要介绍了在Linux系统中安装、启动和连接MongoDB的详细步骤。首先从官网下载MongoDB压缩包并解压至指定目录,接着创建数据和日志存储目录,并配置`mongod.conf`文件以设定日志路径、数据存储路径及绑定IP等参数。之后通过配置文件启动MongoDB服务,并使用`mongo`命令或Compass工具进行连接测试。此外,还提供了防火墙配置建议以及服务停止的两种方法:快速关闭(直接杀死进程)和标准关闭(通过客户端命令安全关闭)。最后补充了数据损坏时的修复操作,确保数据库的稳定运行。
439 0
|
7月前
|
NoSQL JavaScript Shell
微服务2——MongoDB单机部署2——Shell连接
本节介绍如何通过Shell连接MongoDB数据库,使用`mongo`命令登录,默认连接本地127.0.0.1的27017端口。可查看数据库列表(`show databases`),退出shell(`exit`),或通过`--help`获取更多参数。MongoDB Shell基于JavaScript解释器,支持运行JS程序。
170 0
|
9月前
|
存储 NoSQL JavaScript
Node.js导入MongoDB具体操作指南
通过本文,您已经学会了如何在Node.js中导入MongoDB并执行基本的CRUD操作。Node.js与MongoDB的结合使得构建高效、可扩展的后端服务变得更加容易。通过遵循本文的步骤,您可以快速设置并运行一个强大的数据存储和处理系统。希望这篇指南能为您的开发工作提供实用的帮助。
209 13
|
12月前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
12月前
|
NoSQL 网络安全 MongoDB
MongoDB - 连接
10月更文挑战第12天
599 1
|
11月前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
12月前
|
NoSQL 前端开发 JavaScript
Node.js 连接 MongoDB
10月更文挑战第20天
104 0
|
12月前
|
NoSQL 前端开发 JavaScript
Node.js 连接 MongoDB
10月更文挑战第9天
163 0
|
3月前
|
NoSQL MongoDB 数据库
数据库数据恢复—MongoDB数据库数据恢复案例
MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。 结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
|
3月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
277 79

推荐镜像

更多