nodejs连接mysql数据库及基本认识

2021/6/15 19:23:38

本文主要是介绍nodejs连接mysql数据库及基本认识,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、几个常用的全局变量

  • 1、__filename获取当前文件的路径
  • 2、__dirname获取当前文件的目录
  • 3、process.cwd()获取当前工程的目录

二、文件的引入与导出

  • 1、使用require引入文件
  • 2、使用module.exports导出文件中指定的变量、方法、对象

三、node项目的搭建目录结构

demo
    package.json 当前项目所依赖的包或者模块
    router  存放路由的文件
    views   存放视图的模块
    public  静态文件
    module 书写模块比如数据库
    app.js 主入口文件

四、将路由视图单独写在router文件中demo

  • 1、视图视图文件

    const express = require("express");
    const router = express.Router();
    
    router.get("/", (req, res) => {
        res.send("hello word");
    });
    router.get("/article", (req, res) => {
        res.send("我是文章列表");
    })
    
    module.exports = router;
  • 2、在主文件中调用

    'use strict';
    const express = require("express");
    const app = express();
    
    app.use("/",require("./router/03_router"))
    app.use("/app",require("./router/03_router1"))
    
    app.listen(3000);

五、使用ejs模板

  • 1、需要安装但可以不引入npm install ejs --save
  • 2、在主文件中配置

    //配置模板的文件路径
    app.set("views",__dirname+"/views");
    //配置模板引擎
    app.set("view engine","ejs");
  • 3、使用

    • 1、模板文件

      <!doctype html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <meta name="viewport"
                content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
          <meta http-equiv="X-UA-Compatible" content="ie=edge">
          <title>Document</title>
      </head>
      <body>
      <h1>我是模板渲染的</h1>
      </body>
      </html>
    • 2、在路由中渲染模板

      'use strict';
      const express = require("express");
      const router = express.Router();
      
      router.get("/", (req, res) => {
          //可以直接使用res.render("03_index");
          res.render("03_index.ejs");
      });
      router.get("/article", (req, res) => {
          res.send("我是文章列表");
      })
      
      module.exports = router;
    • 3、主文件

      'use strict';
      const express = require("express");
      const app = express();
      //配置模板的文件路径
      app.set("views",__dirname+"/views");
      //配置模板引擎
      app.set("view engine","ejs");
      
      app.use("/",require("./router/03_router"))
      app.use("/app",require("./router/03_router1"))
      
      app.listen(3000);

六、关于ejs模板文件的使用

  • 1、返回数据

    ...
    let dataset = {
        name:"张三",
        age:20,
        books:['三国演义','西游记','红楼梦','水浒传']
    }
    res.render("03_index.ejs",dataset);
    ...
  • 2、普通的字段

    <h2><%= name %></h2>
    <h2><%= age %></h2>
  • 3、迭代数组

    <ul>
        <% for(let i in books){%>
            <li><%= books[i] %></li>
        <%}%>
    </ul>

七、加载静态文件

  • 1、主文件中配置

    //设置静态文件的加载(js,css,img)
    app.use(express.static(__dirname+"/public"));
  • 2、在模板中使用

    <link rel="stylesheet" href="./css/bootstrap.css">
    <script type="text/javascript" src="./js/jquery-3.1.1.min.js"></script>
    <img src="./img/002.jpg">
    ...

八、使用mysql数据库

  • 1、在module中创建一个db.js的文件

    'use strict';
    const mysql = require("mysql");
    
    /**
     * 将整个方法全部暴漏出去
     * @param sql sql语句
     * @param arg 传递到sql语句中的参数,可以不写
     * @param callback 回调函数,可以不写
     */
    module.exports = function (sql,arg,callback) {
        //1.创建连接(根据自己的数据库配置)
        let config = mysql.createConnection({
            host:"localhost", //数据库的地址
            user:"root", //数据库用户名
            password:"root", //数据库密码
            port:"3306", //mysql数据库的端口号
            database:"mybatistest" //使用那个数据库
        });
        //2.开始连接数据库
        config.connect();
        //3.对数据库的增删改查操作
        config.query(sql,arg,(err,data)=>{
            callback && callback(err,data);
        })
        //4.关闭数据库
        config.end();
    }
  • 2、在router视图中使用查询数据

    • 1、引入文件

      //引入数据库文件
      const db = require("./../module/db");
    • 2、视图中使用

      router.get("/", (req, res) => {
          db("select * from m_dept",(err,data)=>{
              console.log(data);
              res.render("03_index.ejs",{data:data});
          })
      });
  • 3、新增数据

    • 1、前端页面见代码案例
    • 2、通过req.query获取用户数据参数

      router.get("/regist",(req, res)=>{
          //获取到输入参数,前提是input上要写name
          console.log(req.query);
          db("insert into student(name,age) values(?,?)",[req.query.username,req.query.age],(err,data)=>{
              console.log(data);
              if(data){
                  res.send("成功");
              }
          })
      })

九、关于node返回json的方式

在前后端分离开发模式中后端返回的数据一般都是json,不需要使用ejs模板引擎了

...
res.json({
    info:"成功",
    code:1
});
...

十、本章节代码代码案例



这篇关于nodejs连接mysql数据库及基本认识的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程