node.js+MySQL后端开发--(烂尾了 闲了再更)

2,444 阅读4分钟

前端同学大多习惯使用MongoDb数据库但是MySQL才是正儿八经开发环境中用的多的数据库,那么应该怎么样使用node.js配合MySql写一个完整的后端项目呢?

数据库部分

安装数据库

安装数据库有两种方法一种是采用命令行安装,一种是直接在官网下载,这个看个人喜好就行,我是以macOS命令行安装为例:

//下载工具是homebrew
//mySql8.x在使用上还有很多不兼容的地方,所以推荐下载5.7
$ brew install mysql@5.7 
//下载好之后需要连接
$ brew link --force mysql@5.7 
// 启动服务
$ brew services start mysql@5.7 
// 输出到环境变量
echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc 
//添加登陆密码,如果自己使用,可以不设置密码
$ mysql_secure_installation
//如果没有设置登陆密码就不加 -p
$ mysql -uroot -p

官网下载安装包的话指路 => dev.mysql.com/downloads/m…

点击红框哪里选择对应的版本,下载好了以后无情下一步即可 (有问题直接百度搜索 电脑版本 + 安装MySql@5.7就行)

数据库装好了

安装好以后就可以学习Sql语句啦!

介绍几个基本操作

  • USE 数据库名; : 选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。
  • SHOW DATABASES;: 列出 MySQL 数据库管理系统的数据库列表。 图片里的四个都是自带的
  • SHOW TABLES;: 显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。
  • SHOW COLUMNS FROM 数据表: 显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。
  • SHOW INDEX FROM 数据表;: 显示数据表的详细索引信息,包括PRIMARY KEY(主键)。

sql语句

SQL DML 和 DDL

可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。 SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。

SQL 的数据定义语言 (DDL)

部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。

SQL 中最重要的 DDL 语句:

  • CREATE DATABASE 数据库名- 创建新数据库
  • CREATE TABLE 表名 - 创建新表
  • ALTER TABLE 操作语句- 变更(改变)数据库表
  • DROP TABLE 表名 - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

查询和更新指令构成了 SQL 的 DML 部分:

  • INSERT INTO - 向数据库表中插入数据
INSERT INTO message_list
(
 [type], [status],[title],[concent],[author]
-- 如果每一条数据都写的话可以不写这些
)
VALUES
(   
        1,
	"私信",
	1,
	"用户中心控制台",						
        "这是文章内容",
        "白雨婷"
-- 注意传入值和数据类型的对应
);

  • SELECT - 从数据库表中获取数据
select * from 表名称
-- 获取全部数据

  • UPDATE - 更新数据库表中的数据
update 表名称 set 变更内容 where 条件筛选;

  • DELETE - 从数据库表中删除数据
delete from 表名称 where 条件

node.js部分

采用express框架(生成器)=> express官网

连通数据库

连通数据库并不复杂,但是网上没找到很靠谱的教程,所以在这里简单说一下

.
├── app.js
├── bin
│   └── www
├── package.json
├── public
│   ├── images
│   ├── javascripts
│   └── stylesheets
│       └── style.css
├── routes
│   ├── index.js
│   └── users.js
└── views
    ├── error.pug
    ├── index.pug
    └── layout.pug

7 directories, 9 files

  • 首先要下载mySql中间件npm install mysql,在npm里搜一下就能搜到用法
  • 然后文件根目录下新建一个config文件夹,文件夹里新建一个db.js作为数据库的配置文件
const mysql = require('mysql');

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '****',
    database: '数据库名称'
});

module.exports = {
    connection
};

  • 在app.js引入这个文件
var { connection } = require('./config/db')
connection.connect((err)=>{
  if(err){
    console.log("数据库连接失败")
  }
  console.log("数据库连接成功")
});

运行项目,就成了,网上很多教程采用请求一次断开一次的写法,那样很耗费性能,不推荐。

接口编写

响应模块化开发,在编写后端接口时也应该分模块

.
├── app.js
├── bin
│   └── www
├── common
│   └── constant.js
├── config
│   ├── db.js
│   └── sql.js
├── controllers
│   ├── messagelist.js
│   ├── msgsocket.js
│   └── postmessage.js
├── modules
│   ├── msgsocket.js
│   ├── postmessages.js
│   └── selectmessages.js
├── package-lock.json
├── package.json
├── public
│   ├── images
│   ├── javascripts
│   └── stylesheets
│       └── style.css
├── routes
│   ├── auth.js
│   ├── index.js
│   └── message.js
└── views
    ├── error.ejs
    └── index.ejs
    

config下新建sql.js目录,存放sql语句

//采用函数的形式编写sql语句,在调用时传参
const allmessages = (userID) => {
    return `select * from msg t1 join msg_user t2 on t1.id = t2.msgid and t2.reciever = '${userID}' ORDER BY t2.createTime DESC ,t2.updateTime DESC;` 
}