当前位置: 首页 > 文档资料 > Sequelize ORM 实践 >

第一章 搭建环境

优质
小牛编辑
120浏览
2023-12-01

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

1.创建项目文件夹

mkdir myApp && cd myApp

2.初始化我们的项目

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

npm init -y

3.初始化 typescript 配置文件

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

tsc --init

tsconfig.jsontarget 改成 es6

4.安装依赖项

首先安装运行依赖项目

npm i sequelize mysql2 -S

接着安装开发依赖

npm i @types/sequelize -D

5.准备一个数据库

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

6.编写代码进行测试

新建index.ts

import Sequelize from 'sequelize';

const sequelize = new Sequelize('nodelover', 'root', '', {
  host: 'localhost',
  dialect: 'mysql',

  pool: {
    max: 5,
    min: 0,
    idle: 10000 // 连接在释放之前可以空闲的最长时间(以毫秒为单位)
  },
});

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

解决报错的问题

1.方案一

import * as Sequelize from 'sequelize';

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

module.exports = Sequelize;
module.exports.Sequelize = Sequelize;
module.exports.default = Sequelize;

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

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

把文件末尾

export = sequelize;

改成

export default

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

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

npm i ts-node -g

8.测试连接是否成功

async function main() {
  try {
    await sequelize.authenticate()
    console.log("sequelize 已经连接成功啦! >_< ")
    process.exit(0)
  }catch(e){
    console.log(e)
  }
}

main()

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

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

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

表明我们成功运行。