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 Express框架中处理404页面一个方式
May 28 NodeJs
基于promise.js实现nodejs的promises库
Jul 06 NodeJs
Nodejs为什么选择javascript为载体语言
Jan 13 NodeJs
NodeJS使用jQuery选择器操作DOM
Feb 13 NodeJs
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
Mar 28 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
Nodejs调用WebService的示例代码
Sep 29 NodeJs
nodejs中实现用户注册路由功能
May 20 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
nodejs log4js 使用详解
May 31 NodeJs
nodejs简单抓包工具使用详解
Aug 23 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
smarty循环嵌套用法示例分析
2016/07/19 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
JavaScript表单常用验证集合
2008/01/16 Javascript
优化javascript的执行速度
2010/01/23 Javascript
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
easyui Droppable组件实现放置特效
2015/08/19 Javascript
详细探究ES6之Proxy代理
2016/07/22 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
SVG描边动画
2017/02/23 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
详解性能更优越的小程序图片懒加载方式
2018/07/18 Javascript
Vue利用History记录上一页面的数据方法实例
2018/11/02 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
ES6学习教程之Promise用法详解
2020/11/22 Javascript
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
如何高效使用Python字典的方法详解
2017/08/31 Python
python负载均衡的简单实现方法
2018/02/04 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
python2.7使用plotly绘制本地散点图和折线图
2019/04/02 Python
windows上安装python3教程以及环境变量配置详解
2019/07/18 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
Python原始套接字编程实例解析
2020/01/29 Python
HTML5之语义标签介绍
2016/07/07 HTML / CSS
CHARLES & KEITH加拿大官网:新加坡时尚品牌
2020/03/26 全球购物
Servlet如何得到客户端机器的信息
2014/10/17 面试题
高中生的自我鉴定范文
2014/01/24 职场文书
一年级家长会邀请函
2014/01/25 职场文书
车队司机个人自我鉴定
2014/04/17 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书
python 如何做一个识别率百分百的OCR
2021/05/29 Python
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android