搭建环境
本书所有的例子都将使用 TypeScript
语言进行编写,因为这样我们不仅可以得到代码提示,而且还可以使用 async/await
特性
1.创建项目文件夹
mkdir myApp && cd myApp
2.初始化我们的项目
这样我们会得到一个package.json
,来保存我们所有安装的依赖库。
npm init -y
3.初始化 typescript 配置文件
tsc (typescript compiler) 是 typescript 提供的命令行工具,用于编译 .ts
文件
tsc --init
将 tsconfig.json
的 target
改成 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 已经连接成功啦! >_<
表明我们成功运行。