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 >
<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 >
<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>

-