一、typeorm 数据库链接
node.js 可以使用第三方写的包来链接 mysql mongodb 等数据库。 我这里用 mysql 数据库, node.js 框架是 nest.js.
安装
pnpm add --save @nestjs/typeorm typeorm mysql mysql2 -w
数据库 config 基本配置
// src/config/db.config.ts
import { DataSource, DataSourceOptions } from 'typeorm';
// 基础配置
const baseConfig: DataSourceOptions = {
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: '123456',
database: 'school',
synchronize: false, // 数据库自动同步 entity 文件修改
};
// 该对象用于 nestjs typeorm 初始化
export const ormConfig: DataSourceOptions = {
...baseConfig,
entities: ['dist/**/entities/*.entity{.js,.ts}'],
};
// 该对象 typeorm cli 迁移时使用
const ormConfigForCli: DataSourceOptions = {
...baseConfig,
entities: ['src/**/entities/*.entity{.js,.ts}'],
migrations: ['migrations/*{.js,.ts}'],
subscribers: ['subscribers/*{.js,.ts}'],
logger: 'file',
logging: true,
};
// 实例化dataSource,用以之后cli使用
const dataSource = new DataSource(ormConfigForCli);
// 此处的dataSource需要 export default才可以使用
export default dataSource;
如何定义一个表
这里通过 @Entity() 这个装饰器方法表示这里是一个表的定义
Nav 类是表的实例对象,代表定义了一个表, Nav 作为名字,id 是这个表的字段
@PrimaryGeneratedColumn() 是表唯一的自增主键的快捷写法
@Column({length: 45}) 装饰器是定义了一个新的列 {length: 45 } 是这个列的相关配置
// src/entities/xxxx.entity.ts
import { PrimaryGeneratedColumn, Column, Entity } from "typeorm";
@Entity()
export class Nav {
@PrimaryGeneratedColumn()
id: number;
@Column({length: 45})
name: string;
@Column({length:255})
url: string;
@Column('int')
status: number;
}