nodejs连接mysql数据库及基本知识点详解


Posted in NodeJs onMarch 20, 2018

本文实例讲述了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、使用

①、模板文件

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

②、在路由中渲染模板

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

③、主文件

'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" rel="external nofollow" >
<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视图中使用查询数据

①、引入文件

//引入数据库文件
const db = require("./../module/db");

②、视图中使用

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

3、新增数据

①、前端页面见代码案例

②、通过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
});
...

十、github上的本章节代码案例https://github.com/kuangshp/node-pro1

希望本文所述对大家nodejs程序设计有所帮助。

NodeJs 相关文章推荐
NodeJS与Mysql的交互示例代码
Aug 18 NodeJs
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
Jul 15 NodeJs
nodejs修复ipa处理过的png图片
Feb 17 NodeJs
详解Nodejs基于mongoose模块的增删改查的操作
Dec 21 NodeJs
nodejs进阶(6)—连接MySQL数据库示例
Jan 07 NodeJs
nodejs中使用HTTP分块响应和定时器示例代码
Mar 19 NodeJs
nodejs socket服务端和客户端简单通信功能
Sep 14 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
nodejs中函数的调用实例详解
Oct 31 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 NodeJs
nodejs中内置模块fs,path常见的用法说明
Nov 07 NodeJs
浅谈JS和Nodejs中的事件驱动
May 05 NodeJs
nodejs基于express实现文件上传的方法
Mar 19 #NodeJs
nodejs+mongodb aggregate级联查询操作示例
Mar 17 #NodeJs
nodejs实现超简单生成二维码的方法
Mar 17 #NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 #NodeJs
NodeJS实现不可逆加密与密码密文保存的方法
Mar 16 #NodeJs
nodejs简单读写excel内容的方法示例
Mar 16 #NodeJs
nodejs简单访问及操作mysql数据库的方法示例
Mar 15 #NodeJs
You might like
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
php中一个完整表单处理实现代码
2011/11/10 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
PHP生成条形图的方法
2014/12/10 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
ExtJS中文乱码之GBK格式编码解决方案及代码
2013/01/20 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
Javascript数组操作函数总结
2015/02/05 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
微信小程序数据分析之自定义分析的实现
2018/08/17 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
Django中处理出错页面的方法
2015/07/15 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
解决pycharm无法调用pip安装的包问题
2018/05/18 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
2019/03/20 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
用ldap作为django后端用户登录验证的实现
2020/12/07 Python
html5 canvas简单封装一个echarts实现不了的饼图
2018/06/12 HTML / CSS
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
国旗下的讲话演讲稿
2014/05/08 职场文书
门面房租房协议书
2014/12/01 职场文书
同学聚会通知书
2015/04/20 职场文书
看雷锋电影观后感
2015/06/10 职场文书
pytorch--之halfTensor的使用详解
2021/05/24 Python
Python之matplotlib绘制饼图
2022/04/13 Python