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中简单实现Javascript Promise机制的实例
Dec 06 NodeJs
Windows 系统下设置Nodejs NPM全局路径
Apr 26 NodeJs
nodejs读写json文件的简单方法(必看)
Mar 09 NodeJs
详解如何在NodeJS项目中优雅的使用ES6
Apr 22 NodeJs
深入理解Nodejs Global 模块
Jun 03 NodeJs
Nodejs实现爬虫抓取数据实例解析
Jul 05 NodeJs
Nodejs中的JWT和Session的使用
Aug 21 NodeJs
详解NodeJS Https HSM双向认证实现
Mar 12 NodeJs
nodejs log4js 使用详解
May 31 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 NodeJs
NodeJS实现一个聊天室功能
Nov 25 NodeJs
nodejs对mongodb数据库的增加修删该查实例代码
Jan 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
PHP文本操作类
2006/11/25 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
解决在laravel中auth建立时候遇到的问题
2019/10/15 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
jquery1.10给新增元素绑定事件的方法
2014/03/06 Javascript
Javascript 多物体运动的实现
2014/12/24 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
2016/12/06 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
vue.js-div滚动条隐藏但有滚动效果的实现方法
2018/03/03 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
2019/07/03 Javascript
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
python字符串对其居中显示的方法
2015/07/11 Python
Python selenium如何设置等待时间
2016/09/15 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
如何基于Python批量下载音乐
2019/11/11 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
亚马逊巴西站:Amazon.com.br
2019/09/22 全球购物
英国领先的游戏零售商:GAME
2019/09/24 全球购物
阳光体育活动总结
2014/04/30 职场文书
2014年民政局关于保密工作整改措施
2014/09/19 职场文书
工作收入住址证明
2014/10/28 职场文书
任命书标准格式
2015/03/02 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
运动员代表致辞
2015/07/29 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js