NestJS + Sequelize + JWT 项目教程
1. 项目的目录结构及介绍
/nestjs-sequelize-jwt
├── src
│ ├── config
│ │ ├── database.ts
│ │ ├── jwt.ts
│ │ └── ...
│ ├── modules
│ │ ├── auth
│ │ │ ├── auth.controller.ts
│ │ │ ├── auth.module.ts
│ │ │ ├── auth.service.ts
│ │ │ └── ...
│ │ ├── user
│ │ │ ├── user.controller.ts
│ │ │ ├── user.module.ts
│ │ │ ├── user.service.ts
│ │ │ └── ...
│ │ └── ...
│ ├── app.module.ts
│ ├── main.ts
│ └── ...
├── .env
├── .gitignore
├── package.json
├── tsconfig.json
└── ...
目录结构介绍
- src: 项目的源代码目录。
- config: 配置文件目录,包含数据库和JWT的配置。
- modules: 模块目录,包含各个功能模块,如认证模块(auth)和用户模块(user)。
- app.module.ts: 应用的主模块文件。
- main.ts: 项目的启动文件。
- .env: 环境变量文件。
- .gitignore: Git忽略文件配置。
- package.json: 项目的依赖和脚本配置。
- tsconfig.json: TypeScript配置文件。
2. 项目的启动文件介绍
main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
启动文件介绍
- main.ts: 这是项目的入口文件,负责启动NestJS应用。
- 使用
NestFactory.create
方法创建应用实例。 - 调用
app.listen
方法启动服务器,监听3000端口。
- 使用
3. 项目的配置文件介绍
config/database.ts
import { Sequelize } from 'sequelize-typescript';
import { User } from '../modules/user/user.entity';
export const databaseProviders = [
{
provide: 'SEQUELIZE',
useFactory: async () => {
const sequelize = new Sequelize({
dialect: 'postgres',
host: process.env.DATABASE_HOST,
port: parseInt(process.env.DATABASE_PORT, 10),
username: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE_DATABASE,
});
sequelize.addModels([User]);
await sequelize.sync();
return sequelize;
},
},
];
config/jwt.ts
import { JwtModuleOptions } from '@nestjs/jwt';
export const jwtConfig: JwtModuleOptions = {
secret: process.env.JWT_PRIVATE_KEY,
signOptions: { expiresIn: '60s' },
};
配置文件介绍
- config/database.ts: 数据库配置文件,使用Sequelize连接数据库,并同步模型。
- 从环境变量中读取数据库连接参数。
- 使用
Sequelize
实例化数据库连接,并添加模型。
- config/jwt.ts: JWT配置文件,配置JWT的密钥和过期时间。
- 从环境变量中读取JWT密钥。
- 配置JWT的签名选项,如过期时间。
以上是NestJS + Sequelize + JWT项目的目录结构、启动文件和配置文件的详细介绍。希望对您有所帮助!