搭建环境

本书所有的例子都将使用 TypeScript 语言进行编写,因为这样我们不仅可以得到代码提示,而且还可以使用 async/await 特性

1.创建项目文件夹

  1. mkdir myApp && cd myApp

2.初始化我们的项目

这样我们会得到一个package.json,来保存我们所有安装的依赖库。

  1. npm init -y

3.初始化 typescript 配置文件

tsc (typescript compiler) 是 typescript 提供的命令行工具,用于编译 .ts 文件

  1. tsc --init

tsconfig.jsontarget 改成 es6

4.安装依赖项

首先安装运行依赖项目

  1. npm i sequelize mysql2 -S

接着安装开发依赖

  1. npm i @types/sequelize -D

5.准备一个数据库

自行准备一个数据库,我这里准备的数据库名称叫 nodelover

6.编写代码进行测试

新建index.ts

  1. import Sequelize from 'sequelize';
  2. const sequelize = new Sequelize('nodelover', 'root', '', {
  3. host: 'localhost',
  4. dialect: 'mysql',
  5. pool: {
  6. max: 5,
  7. min: 0,
  8. idle: 10000 // 连接在释放之前可以空闲的最长时间(以毫秒为单位)
  9. },
  10. });

此时是会报错的,是因为我们的定义文件没有默认导出。

解决报错的问题

1.方案一

  1. import * as Sequelize from 'sequelize';

2.方案二我们可以查看一下 node_modules/sequelize/lib/sequelize.js 这个文件的最后面。

  1. module.exports = Sequelize;
  2. module.exports.Sequelize = Sequelize;
  3. module.exports.default = Sequelize;

其实在官方已经做了 es6 的兼容,所以可以修改我们的 @types 文件。

来到 node_modules/@types/sequelize/index.d.ts 文件

把文件末尾

  1. export = sequelize;

改成

  1. export default

这里我会选择第二种方案,因为我比较喜欢新的东西,有人说重新安装 @types 之后,没有进行修改无法编译怎么办? 一般运行的时候我们只需要上传 js 文件即可,而假如是开源给别人看,可以在 README.md 注明一下。

7.安装一个 ts 的运行工具

  1. npm i ts-node -g

8.测试连接是否成功

  1. async function main() {
  2. try {
  3. await sequelize.authenticate()
  4. console.log("sequelize 已经连接成功啦! >_< ")
  5. process.exit(0)
  6. }catch(e){
  7. console.log(e)
  8. }
  9. }
  10. main()

process.exit(0) 是为了让程序退出。

下面是我们的运行命令与结果。

  1. > Yugo @ Tractor in ~/Desktop/nl-sequelize/code/chapter1 [xx:xx:xx]
  2. $ ts-node index.ts
  3. Executing (default): SELECT 1+1 AS result
  4. sequelize 已经连接成功啦! >_<

表明我们成功运行。