Ceci est une continuation de this
Table of Contents
La structure de répertoires actuelle prend le format suivant.
$ tree -L 1 -I node_modules
├── README.md
├── apps
│ └── nestjs-sample
│ ├── jest.config.js
│ ├── src
│ │ ├── app
│ │ │ ├── app.controller.spec.ts
│ │ │ ├── app.controller.ts
│ │ │ ├── app.module.ts
│ │ │ ├── app.service.spec.ts
│ │ │ ├── app.service.ts
│ │ │ └── todo
│ │ ├── assets
│ │ ├── environments
│ │ │ ├── environment.prod.ts
│ │ │ └── environment.ts
│ │ └── main.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── jest.config.js
├── libs
├── nx.json
├── package.json
├── tmp
│ └── apps
│ └── nestjs-sample
│ └── tsconfig.generated.json
├── tools
│ ├── schematics
│ └── tsconfig.tools.json
├── tsconfig.base.json
├── workspace.json
└── yarn.lock
Ensuite, créez simplement un fichier docker avec une image de mysql.
$ touch docker-compose.yml
$ touch Dockerfile
Décrivez le contenu de docker-compose.
docker-compose.yml
version: '3.8'
services:
db:
container_name: nestjs-sample-db
image: mysql:5.7
tty: true
restart: always
environment:
MYSQL_DATABASE: nestjs-sample-db
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: nestjs-sample-db
MYSQL_PASSWORD: password
ports:
- '3306:3306'
Le contenu de Docker est le suivant.
FROM mysql:5.7
Démarrez docker.
$ docker-compose up
Puisque ce chapitre sera implémenté, je pense que c'est mieux pour ceux qui veulent le traiter dans Documents officiels.
Les choses à faire sont les mêmes
Sera réalisée.
Installez le module de dépendance.
$ yarn add @nestjs/typeorm typeorm mysql
Modifiez app.module.ts_ pour activer TypeORM.
Le fichier app.module.ts actuel est le suivant.
app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
Ajoutez les paramètres TypeOrm ici.
app.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm'; ##Ajouter ici
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [
##Ajout d'ici
TypeOrmModule.forRoot({
type: "mysql",
host: "localhost",
port: 3306,
username: "nestjs-sample-db",
password: "password",
database: "nestjs-sample-db",
entities: ["dist/**/*.entity{.ts,.js}"],
"synchronize": true
}),,
##Ajouté jusqu'à ici
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
Si vous utilisez le document officiel, c'est la fin, mais comme il ne lit pas les paramètres d'entité, changez-le en TypeormModule.forRoot comme suit.
app.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [
TypeOrmModule.forRoot({
type: "mysql",
host: "localhost",
port: 3306,
username: "nestjs-sample-db",
password: "password",
database: "nestjs-sample-db",
entities: [], ##Changer ici
autoLoadEntities: true,
synchronize: true ##Changer ici
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
"@ nrwl / workspace": S'il s'agit de "10.3.1", il sera décrit un jour car la connexion et la relation avec la base de données ne fonctionneront pas uniquement avec ce paramètre (des problèmes ont été soulevés à partir du 11/7, mais ils ont été résolus. Cela ne fonctionne pas + la réécriture de tsconfig fonctionne, mais ...)
En gros, changez tsconfig.app.json et app.module.ts par ce qui suit.
tsconfig.app.json
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"types": ["node"],
"emitDecoratorMetadata": true,
"skipLibCheck": true,
"module": "commonjs", // <-- here
"target": "es2017", // <-- here
},
"exclude": ["**/*.spec.ts"],
"include": ["**/*.ts"]
}
app.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { getMetadataArgsStorage } from 'typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
type: "mysql",
host: "localhost",
port: 3306,
username: "nestjs-sample-db",
password: "password",
database: "nestjs-sample-db",
entities: getMetadataArgsStorage().tables.map(t => t.name),
synchronize: true,
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
Recommended Posts