Express (nodejs) 相关

Express 相关

长乐未央学习视频@东哥

1. 安装 express-generator 脚手架,新建项目

  1. 执行命令

npm install express express-generator@4 -g

同时安装 express,和 express 脚手架.

npm install express express-generator@4 -g
  1. 通过 express 脚手架创建 express 项目

express --no-view iike-api

cd iike-api

npm install

npm start (启动项目)

指令解释:

  • --no-view 表示 不需要视图模板
  • iike-api 表示 express 项目名称
  • cd iike-api 进入 iike-api 项目中
express --no-view iike-api

cd iike-api

npm install

npm start
  1. 访问本地地址

http://localhost:3000/

页面显示 Express Welcome to Express ,表示项目启动成功

2. JSON 格式配置

  1. 在 express 项目启动成功后,访问本地地址;会发现,是一个 html 格式.
  2. express 项目一般用来做接口使用,所以我们需要将 html 格式转化为 json 格式.
  3. 操作如下:
  1. iike-api\routes\index.js 修改下面代码
router.get("/", function (req, res, next) {
  res.render("index", { title: "Express" });
});

// 替换为
router.get("/", function (req, res, next) {
  res.json({ message: "Hello Nodejs!" });
});
  1. 删除 iike-api\public\index.html 文件

  2. 重启 express 服务

    ctrl + c 终止, npm start 重启.

  3. 刷新页面后,拿到的信息就是 json 格式的了

3. 推荐浏览器处理 JSON 格式的插件

JSON-handle ,

  • edge 浏览器可以直接在应用商店中下载

4. 安装 nodemon 解决频繁重启问题

  1. 下载 nodemon 依赖
npm i nodemon
  1. 配置 package.json 文件.

    将启动脚本 node ./bin/www 改为 nodemon ./bin/www

  "scripts": {
    "start": "nodemon ./bin/www"
  },
  1. 第一次配置,记得重启服务

5. 项目结构 与 代码解析

  1. routes 文件夹(重要),不同网址对应要不同的程序.后续开发基本都会在 routes 中进行
  2. app.js 配置跨域 等配置,都会在这里

6. 使用 Docker 运行 mysql (docker 运行不了的话可以使用 小皮面板)

  1. 安装 docker

    docker 官网下载

7. 服务器环境配置软件推荐

宝塔面板

小皮面板

小皮面板 mysql 数据库连接

  1. 打开 navicat 或 dbeaver ,数据库可视化管理工具。

  2. 以 dbeaver 为例,创建新连接

    • 服务器地址: localhost (一般不变)
    • 端口: 3306 (一般不变)
    • 数据库(名称):express_demo
    • 用户名:iike (自定义)
    • 密码:666 (自定义)
    • 最后点击完成数据库就建好了。
  3. 打开小皮面板 ,首页启动 mysql 5… 。

  4. 小皮面板 ,点击数据库 ,创建数据库。(输入数据库名称,用户名,密码)

    • 这里的数据库名称 就是上面再 dbeaver 中创建的数据库名称。
    • 用户名密码 同样是上述中生成的。
  5. 回到 dbeaver ,右键创建好的数据库,点击连接。

  6. 连接成功后,就可以新建数据表了。

8. Express 创建 mysql 连接

  1. 在根目录新建一个 database 目录,用来存放 数据库相关操作。
  2. 新建一个 config.js 文件,用来初始化 mysql 连接操作。

database/config.js 文件内容如下

注意,引入 mysql 之前,记得全局下载一下,npm i mysql

//db.js

const mysql = require("mysql");
//连接数据库

module.exports = {
  // 数据库基础配置
  config: {
    host: "localhost", // 服务器地址
    port: 3306, // 端口
    user: "iike", // 数据库用户名
    password: "666666", // 密码
    database: "express_demo", // 数据库名称
  },
  // 连接数据库,使用 mysql的连接池连接方式
  sqlContent: function (sql, sqlArr, callBack) {
    var pool = mysql.createPool(this.config);
    pool.getConnection((err, connection) => {
      console.log("mysql-123");
      if (err) {
        console.log(err, "连接失败");
        return;
      }
      // 事件驱动回调
      connection.query(sql, sqlArr, callBack(err, connection));
      // 释放连接
      connection.release();
    });
  },
};

9. routes 文件引入 mysql

在 routes/index.js 文件中配置如下代码

const express = require("express");
const router = express.Router();
var dbCongif = require("../dataBase/config.js");

/* GET home page. */
router.get("/", function (req, res, next) {
  // 数据库相关操作
  var sql = "SELECT* FROM cate";
  var sqlArr = [];
  var callBack = (err, conn) => {
    if (err) {
      console.log(err, "123");
      console.log("数据库连接失败");
    } else {
      conn.query(sql, function (err, result) {
        if (err) {
          console.log("查询失败");
        } else {
          res.send({
            list: result,
          });
        }
      });
    }
  };
  dbCongif.sqlContent(sql, sqlArr, callBack);
});

module.exports = router;

查询数据表时需注意

!!! 如果控制台报错

  1. Error: ER_NO_SUCH_TABLE: Table 'express_demo.newtable' doesn't exist ,数据表不存在。

    • 一定要注意,新建的数据表是否保存
    • 注意,sql 查询时的数据表名称大小写问题。
  2. 数据表保存时,报错 Incorrect table definition; there can be only one auto column and it must be defined (没有主键)

    • 选择约束,新建一个约束(id),设置主键。

配置好查询的 sql 后,访问 localhose:3000

  1. 在我们配置好 mysql 连接后,就可以查询 数据表中的内容了。
  2. 访问 localhost:3000 , 就回将数据库中的数据以 json 的格式展示在页面中。

10. api.js 文件注意事项

const indexRouter = require("./routes/index");
const usersRouter = require("./routes/users");
const adminRouter = require("./routes/admin/articles");

app.use("/", indexRouter);
app.use("/users", usersRouter);
app.use("/admin/articles", adminRouter);

// 访问 http://localhost:3000/users 路径,返回 'respond with a resource'
// 访问 http://localhost:3000/users/users 路径,返回 '注意路由路径拼写'

// users.js 文件内容
var express = require("express");
var router = express.Router();

/* GET users listing. */

// '/'  对应 app.js 中的 /users
router.get("/", function (req, res, next) {
  res.send("respond with a resource");
});

router.get("/users", function (req, res, next) {
  res.send("注意路由路径拼写");
});

module.exports = router;

11. Sequelize orm 依赖,优化sql语句操作

1. Sequelize orm 介绍

Sequelize 是基于 promise 的 Node.js 对象关系映射工具,适用于 Postgres、MySQL、MariaDB、SQLite、微软 SQL 服务器、甲骨文数据库、Amazon Redshift 和 Snowflake 的数据云。它具有可靠的事务支持、关系、预先和延迟加载、读取复制等功能。

特点:可以简化繁琐的 sql 语句操作。

2. Sequelize 中文网地址

Sequelize 中文网

3. sequelize 相关配置

sequelize 配置文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值