nestjs+mysql+prisma + swagger项目搭建

nestjs 学习(一)

项目地址

1. 基础操作

  1. 安装nest yarn add -g @nestjs/cli
  2. 创建项目 nest new project-name
  3. 启动服务器yarn run start
    yarn start:dev 监听文件变化,自动重启服务
  4. 使用nest-cli快速创建service/controller, 会自动引入Module中
    nest g [文件类型] [文件名] [文件目录(src目录下)]
    详细过程可以参考nest详细入门使用教程

2. 数据库的连接及使用——Mysql+Primsa

1. mysql 的基础知识点

官网下载安装,具体步骤可参考菜鸟教程
【常见基本命令】


  - mysql -u root -p //登陆本地mysql 的root账号, -p表示要输入密码
  > show databases; //展示所有的数据库
  > show tables; //展示所有的表
  > create database databaseName; //创建数据库
2. Prisma

基于nestjs和typescript的ORM

  1. 安装 yarn add -D prisma
  2. 项目 init - 生成配置文件/prisma/schema.prisma
    npx prisma init (npx 是npm 的一个包执行器)
  3. 配置schema.prisma,主要包括以下三方面:
    1. DB 连接的配置
    2. Prisma Client 配置
    3. data model 定义
datasource db {
  provider = "mysql". //哪种数据库
  url      = "file:dev.db" //数据库url
}

generator client {
  provider = "prisma-client-js"
}

model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
}

4.运行prisma migrate 生成数据表和 client:
npx prisma migrate dev --name init
- ps: 如果后续有修改schema.prisma ,那么需要重新生成数据表和client
npx prisma migrate dev --name change

5.使用 client 对数据库进行 CRUD
6.使用 Prisma Studio GUI 查看并操作数据库
npx prisma studio

3. prisma 连接数据库和nest

  1. 创建prisma 的module文件
import { Module, Global } from '@nestjs/common';
import { PrismaService } from './prisma.service';

@Global() // 定义全局之后,任何模块都可以直接使用prismaService
@Module({
  providers: [PrismaService],
  exports: [PrismaService],
})
export class PrismaModule {}
  1. 创建prisma的service文件
import { Injectable, INestApplication } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';

@Injectable()
export class PrismaService extends PrismaClient {
  async enableShutdownHooks(app: INestApplication) {
    this.$on('beforeExit', async () => {
      await app.close();
    });
  }
}

4. swagger

swagger: 一种基于RESTApi的工具,可生成交互式的api 文档

  1. 安装 yarn add @nestjs/swagger swagger-ui-express
  2. 在main.js 中引入swagger
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  const swaggerConfig = new DocumentBuilder()
    .setTitle('swaggerLearn')
    .setDescription('The Nest Api document')
    .build();
  const document = SwaggerModule.createDocument(app, swaggerConfig);
  SwaggerModule.setup('api', app, document);

  await app.listen(8090);
}
bootstrap();

访问http://localhost:8090/api 就可以看到生成的api 文档

  1. https://juejin.cn/post/6844904096017678343
  2. https://juejin.cn/post/7112694027212259364
Prisma 是一个现代化的数据库工具包,它可以帮助开发者更轻松地管理和操作数据库。Prisma 支持多种数据库,包括 MySQL。 要在 Prisma 中使用 MySQL,你需要进行以下步骤: 1. 首先,你需要在你的项目中安装 Prisma。可以使用 npm 或者 yarn 进行安装: ``` npm install @prisma/cli ``` 2. 安装完成后,你可以使用 Prisma CLI 初始化一个新的 Prisma 项目。在终端中运行以下命令: ``` npx prisma init ``` 这将创建一个新的 Prisma 项目,并生成一个 prisma 目录。 3. 接下来,你需要在 Prisma 的 `schema.prisma` 文件中定义你的数据模型和数据库连接。打开 `prisma/schema.prisma` 文件,然后添加以下代码: ```prisma datasource db { provider = "mysql" url = "mysql://username:password@localhost:3306/database_name" } generator client { provider = "prisma-client-js" } ``` 将 `username`、`password` 和 `database_name` 替换为你自己的 MySQL 连接信息。 4. 定义完数据模型和数据库连接后,运行以下命令来生成 Prisma 客户端: ``` npx prisma generate ``` 这将根据你的数据模型生成 Prisma 客户端代码。 5. 现在,你可以在你的应用程序中使用 Prisma 客户端来操作 MySQL 数据库了。你可以通过导入 Prisma 客户端并使用生成的方法来进行查询、创建、更新和删除操作。 ```javascript const { PrismaClient } = require('@prisma/client'); const prisma = new PrismaClient(); async function main() { const users = await prisma.user.findMany(); console.log(users); } main() .catch(e => console.error(e)) .finally(() => prisma.$disconnect()); ``` 这是一个简单的示例,查询所有的用户并打印出来。 这就是使用 Prisma 连接和操作 MySQL 数据库的基本步骤。你可以在 Prisma 文档中找到更多关于 Prisma 和 MySQL 的详细信息和示例代码。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哆啦咪唏

看到这里了,不留下点什么吗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值