• nodejs驱动mongodb 实现数据增删改查,将数据库数据渲染在页面,通过表单项数据库新增数据


    -

    先初始化一个项目,生成package.json

    npm init

    安装mongodb

    npm install mongodb --save

    下面是nodejs操作mongodb的具体操作

    app.js

    // 引入mongodb
    const {MongoClient} = require("mongodb");
    
    // 定义数据库连接的地址
    const url = ' mongodb://127.0.0.1:27017';
    
    // 定义要操作的数据库
    const dbName = 'itying'
    
    // 实例化MongoClient 传入数据库连接地址
    const client = new MongoClient(url);
    
    // 连接数据库
    client.connect((err) => {
      if(err){
        console.log(err);
        return;
      }
      console.log("数据库连接成功");
      
      // 用数据库实例 切换到itying数据库
      let db = client.db(dbName);
    
      // 1.查找数据
      db.collection("user").find({"age":{$gte:90}}).toArray((err,data) => {
    
        console.log(data);
        // 操作完数据库之后 一定要关闭数据库
        client.close();
    
      });
    
      // 2.增加数据
      db.collection("user").insertOne({"username":"nodejs操作mongodb","age":100},(err,result) => {
        if(err){//增加失败
          console.log(err);
          return;
        }
    
        console.log("增加成功");
        console.log(result);
      
        client.close();
    
    
      })
    
      // 3.修改数据
      db.collection("user").updateOne({"username":"zhangsan0"},{$set:{age:10}},(err,result) => {
        if(err){//修改失败
          console.log(err);
          return;
        }
    
        console.log("修改成功");
        console.log(result);
    
        client.close();
      })
    
      // 4.删除1条数据
      db.collection("user").deleteOne({"age":10},(err,result) => {
        // 如果找不到数据 就不会删除 是不会报错的 要注意
        if(err){//删除失败
          console.log(err);
          return;
        }
    
        console.log("删除1条数据成功");
        console.log(result);
    
        client.close();
    
      })
    
      // 5.删除多条数据
      db.collection("user").deleteMany({"age":{$gte:90}},(err,result) => {
        // 如果找不到数据 就不会删除 是不会报错的 要注意
        if(err){//删除失败
          console.log(err);
          return;
        }
    
        console.log("删除多条数据成功");
        console.log(result);
    
        client.close();
    
      })
    
      
    })

    结合路由把数据库里的数据渲染出来,通过表单新增数据

    app.js

    const http = require('http');
    const app = require("./module/router")
    const ejs = require("ejs");
    const querystring = require('querystring')
    // 引入mongodb
    const {MongoClient} = require("mongodb");
    // 定义数据库连接的地址
    const url = ' mongodb://127.0.0.1:27017';
    
    // 定义要操作的数据库
    const dbName = 'itying'
    
    // 实例化MongoClient 传入数据库连接地址
    // const client = new MongoClient(url);
    
    // 注册web服务
    http.createServer(app).listen(3000);
    
    // 修改静态web目录
    app.static("public")
    
    // 注册路由
    app.get("/",(req,res) => {
    
        MongoClient.connect(url,(err,client) => {
            // 连接数据库
            client.connect((err) => {
                if(err){
                    console.log(err);
                    return;
                }
                // 用数据库实例 切换到itying数据库
                let db = client.db(dbName);
    
                // 1.查找数据
                db.collection("user").find({}).toArray((err,result) => {
    
                    console.log(result);
                    // 操作完数据库之后 一定要关闭数据库
                    client.close();
    
                    ejs.renderFile("./views/index.ejs",{
                        list:result,
                    },(err,data) => {
                        if(err){
                            console.log(err);
                            return;
                        }
                        res.send(data)
                    })
            
                });
            });
    
        })
    
            
    
    })
    
    app.get("/register",(req,res) => {
      ejs.renderFile("./views/form.ejs",{},{},(err,data) => {
        res.send(data);
      })
    })
    
    app.post("/doRegister",(req,res) => {
        let body = querystring.parse(req.body)
        console.log(body);
        MongoClient.connect(url,(err,client) => {
            // 连接数据库
            client.connect((err) => {
                if(err){
                    console.log(err);
                    return;
                }
                // 用数据库实例 切换到itying数据库
                let db = client.db(dbName);
    
                db.collection("user").insertOne(body,(err,result) => {
                    if(err){
                        console.log(err);
                        return;
                    }
                    console.log("增加数据成功");
                    res.send("增加数据成功");
                    client.close();
                })
            });
    
        })
    })
    
    
    
    console.log('Server running at http://127.0.0.1:3000/');

    index.ejs

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>uer表</title>
    </head>
    <body>
      <h2>获取用户列表数据</h2>
      <ul>
        <%for(var i = 0;i<list.length;i++){%>
          <li><%=list[i].username%> --- <%=list[i].age%></li>
        <%}%>
      </ul>
    </body>
    </html>

    form.ejs

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <link rel="stylesheet" href="./css/style.css">
    </head>
    <body>
      <h2>注册页面</h2>
      <form action="/doRegister" method="post">
        用户名:<input type="text" name="username"/>
        <br>
        <br>&emsp;龄:<input name="age"/>
        <br>
        <br>
        <input type="submit" value="提交">
      </form>
    </body>
    </html>

    -

  • 相关阅读:
    SQL语句优化(转)
    ConcurrentHashMap源码分析
    centos 上安装gearman
    从与UCenter集成的过程中,看到Discuz的不开放
    UCenter实现同步登陆
    讨人喜欢的 MySQL replace into 用法(insert into 的增强版)
    Truncate Table
    mysql中key 、primary key 、unique key 与index区别
    PHP登录时限
    用Fragment实现如新浪微博一样的底部菜单的切换
  • 原文地址:https://www.cnblogs.com/fqh123/p/15221191.html
Copyright © 2020-2023  润新知