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(一)--- Node.js简介及安装开发环境
May 20 NodeJs
nodejs npm install全局安装和本地安装的区别
Jun 05 NodeJs
nodejs实现获取当前url地址及url各种参数值
Jun 25 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
nodejs后台集成ueditor富文本编辑器的实例
Jul 11 NodeJs
nodejs创建简易web服务器与文件读写的实例
Sep 07 NodeJs
Nodejs下使用gm圆形裁剪并合成图片的示例
Feb 22 NodeJs
nodejs用gulp管理前端文件方法
Jun 24 NodeJs
深入理解nodejs搭建静态服务器(实现命令行)
Feb 05 NodeJs
关于NodeJS中的循环引用详解
Jul 23 NodeJs
NodeJS和浏览器中this关键字的不同之处
Mar 03 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
十大“创意”战术!
2020/03/04 星际争霸
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
php实现多维数组排序的方法示例
2017/03/23 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
jquery中ajax学习笔记一
2011/10/16 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
常用DOM整理
2015/06/16 Javascript
JavaScript模块化之使用requireJS按需加载
2017/04/12 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
2020/03/03 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
vue自动添加浏览器兼容前后缀操作
2020/08/13 Javascript
关于better-scroll插件的无法滑动bug(2021通过插件解决)
2021/03/01 Javascript
Python调用C语言开发的共享库方法实例
2015/03/18 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
高考考python编程是真的吗
2020/07/20 Python
python openCV自制绘画板
2020/10/27 Python
利用Python实现学生信息管理系统的完整实例
2020/12/30 Python
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
德国最大的设计师鞋网上商店:Budapester
2017/12/07 全球购物
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
咖啡蛋糕店创业计划书
2014/01/28 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
公司户外活动总结
2014/07/04 职场文书
2014标准社保办理委托书
2014/10/06 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
淮海战役观后感
2015/06/11 职场文书
卖车协议书范文
2016/03/23 职场文书
关于springboot配置druid数据源不生效问题(踩坑记)
2021/09/25 Java/Android