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事件的监听与触发的理解分析
Feb 12 NodeJs
nodejs调用cmd命令实现复制目录
May 04 NodeJs
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
Dec 30 NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
使用nodejs+express实现简单的文件上传功能
Dec 27 NodeJs
修改Nodejs内置的npm默认配置路径方法
May 13 NodeJs
Nodejs模块的调用操作实例分析
Dec 25 NodeJs
NodeJs 模仿SIP话机注册的方法
Jun 21 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 NodeJs
nodeJs项目在阿里云的简单部署
Nov 27 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实现懒加载的方法
2015/03/07 PHP
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
openlayers实现图标拖动获取坐标
2020/09/25 Javascript
[15:57]教你分分钟做大人:斧王
2014/10/30 DOTA
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
Python之eval()函数危险性浅析
2014/07/03 Python
Python递归函数定义与用法示例
2017/06/02 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
Python中__slots__属性介绍与基本使用方法
2018/09/05 Python
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
python 调用有道api接口的方法
2019/01/03 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
Flask-WTF表单的使用方法
2019/07/12 Python
详解python内置模块urllib
2020/09/09 Python
python 如何将office文件转换为PDF
2020/09/22 Python
实例教程 一款纯css3实现的数字统计游戏
2014/11/10 HTML / CSS
设计师珠宝:Ylang 23
2018/05/11 全球购物
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
高中生自我评价个人范文
2013/11/09 职场文书
车间操作工岗位职责
2013/12/19 职场文书
安全检查与奖惩制度
2014/01/23 职场文书
学习雷锋倡议书
2014/04/15 职场文书
师范生求职信
2014/06/14 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
党员教师个人对照检查材料范文
2014/09/25 职场文书
病危通知书样本
2015/04/17 职场文书
2015年新教师工作总结
2015/04/28 职场文书
三下乡活动心得体会
2016/01/23 职场文书
详解JS数组方法
2021/11/20 Javascript