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服务器(2):nodejs服务器的构成分析
Dec 18 NodeJs
PHP和NodeJs开发的应用如何共用Session
Apr 16 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
基于nodejs实现微信支付功能
Dec 20 NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 NodeJs
nodejs用gulp管理前端文件方法
Jun 24 NodeJs
NodeJs入门教程之定时器和队列
Mar 08 NodeJs
详解nodejs http请求相关总结
Mar 31 NodeJs
nodejs实现日志读取、日志查找及日志刷新的方法分析
May 20 NodeJs
NodeJs crypto加密制作token的实现代码
Nov 15 NodeJs
nodejs脚本centos开机启动实操方法
Mar 04 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
php self,$this,const,static,-&amp;gt;的使用
2009/10/22 PHP
php实现的mongodb操作类实例
2015/04/03 PHP
浅谈PHP接收POST数据方式
2015/06/05 PHP
分析php://output和php://stdout的区别
2018/05/06 PHP
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
jquery delay()介绍及使用指南
2014/09/02 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
javascript中数组的常用算法深入分析
2019/03/12 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
Python的Scrapy爬虫框架简单学习笔记
2016/01/20 Python
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
python matplotlib坐标轴设置的方法
2017/12/05 Python
Python 实现删除某路径下文件及文件夹的实例讲解
2018/04/24 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
python属于解释语言吗
2020/06/11 Python
python如何处理程序无法打开
2020/06/16 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
编写函数,将一个3*3矩阵转置
2013/10/09 面试题
大学生就业自荐信
2013/10/26 职场文书
写给保洁员表扬信
2014/01/08 职场文书
警示教育活动总结
2014/05/05 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
篮球友谊赛通讯稿
2014/10/10 职场文书
商铺租房协议书范本
2014/12/04 职场文书
2015大学生党员自我评价范文
2015/03/03 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
社区宣传标语口号
2015/12/26 职场文书
导游词之上饶龟峰
2019/10/25 职场文书
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL