# nest-test **Repository Path**: wuzhongwei.com/nest-test ## Basic Information - **Project Name**: nest-test - **Description**: 学习nest - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-10-30 - **Last Updated**: 2025-01-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 工具 redis客户端工具 https://goanother.com/cn/ redis windows下载地址https://gitee.com/qishibo/AnotherRedisDesktopManager/releases ## docker安装 ```bash curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh systemctl enable docker ``` ## docker执行yaml文件 ```bash docker compose -f docker-compose.mysql.yaml up -d ``` ## docker镜像加速(Ubuntu) ```bash sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://ka6e7p7r.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker docker compose down 删除容器 ``` ## 下载mysql ```bash docker run -dit --name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql ``` ## prisma操作 1. prisma在vscode里无法高亮,则安排prisma插件 2. 定义prisma(表)比如User 3. 执行npx prisma generate命令生成 User表TS类型 4. nest g mo database/prisma --no-spec 5. nset g s database/prisma --no-spec 6. 如果没有创建数据库则先创建testdb数据库 7. 然后执行npx prisma db push命令创建表User 8. 复制service里面的代码 ```bash import { Injectable, OnModuleInit } from '@nestjs/common'; import { PrismaClient } from '@prisma/client'; @Injectable() export class PrismaService extends PrismaClient implements OnModuleInit { async onModuleInit() { await this.$connect(); } } ``` ## 集成mongo需要配置权限 ```base docker exec -it mysql-mongo1-1 mongosh -u root -p // mysql-mongo-1 是mongo容器名 输入账号密码登录mongo cli ``` ## mongo命令 ```base show dbs; 查看全部表 use admin; 切换表 db.createUser({user: 'root', pwd: 'example', 'roles': [{role: 'dbOwner',db:'nest'}]}) 配置权限 db.serverStatus().connections 查看连接数 ``` ## typeorm命令 ```base typeorm:sync":"npm run typeorm -d ormconfig.ts schema:sync // 需要先创建数据库testdb ``` ## 生命周期方法 ```base 服务关闭触发 export class UserService implements OnApplicationShutdown { onApplicationShutdown(signal?: string) { console.log('signal', signal); } } providers: [ { provide: 'TYPEORM_CONNECTIONS', useValue: connections, }, ], ``` ## nestjs CLI创建文件 ```base nest g co auth --no-spec 创建controller nest g mo auth --no-spec 创建module nest g s auth --no-spec 创建service nest g res role --no-spec 创建rest api ``` ## 自定义管道 ```base nest g pipe auth/pipes/create-user --flat --no-spec // --flat不会创建文件夹,而是创建文件 ``` ## 迁移同步命令 ~~~base 根据schema.prisma 生成sql语句 npx prisma migrate dev --name initial-migration ~~~ ## vim使用技巧 ### 删除文件全部内容 第一步:打开需要删除的文件,vi 需要删除的文件 第二步,进入文件后,使用shift+g,进入到最后一行 第三步:按esc后,然后使用:1,.d即可删除所有内容