Dies ist eine Fortsetzung von this
Table of Contents
Die aktuelle Verzeichnisstruktur nimmt das folgende Format an.
$ 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
Als nächstes erstellen Sie einfach eine Docker-Datei mit einem Bild von MySQL.
$ touch docker-compose.yml
$ touch Dockerfile
Beschreiben Sie den Inhalt von 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'
Der Inhalt von Docker ist wie folgt.
FROM mysql:5.7
Starten Sie Docker.
$ docker-compose up
Da dieses Kapitel implementiert wird, denke ich, dass dies besser für diejenigen ist, die sich in Offiziellen Dokumenten damit befassen möchten.
Die Dinge zu tun sind die gleichen
Wird hinausgetragen werden.
Installieren Sie das Abhängigkeitsmodul.
$ yarn add @nestjs/typeorm typeorm mysql
Bearbeiten Sie app.module.ts_, um TypeORM zu aktivieren.
Die aktuelle app.module.ts lautet wie folgt.
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 {}
Fügen Sie hier die TypeOrm-Einstellungen hinzu.
app.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm'; ##Hier hinzufügen
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [
##Ergänzung von hier
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
}),,
##Bis hierher addiert
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
Wenn Sie sich für das offizielle Dokument entscheiden, ist dies das Ende. Da die Entitätseinstellungen jedoch nicht gelesen werden, ändern Sie es wie folgt in TypeormModule.forRoot.
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: [], ##Hier ändern
autoLoadEntities: true,
synchronize: true ##Hier ändern
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
"@ nrwl / workspace": Wenn es sich um "10.3.1" handelt, wird es eines Tages beschrieben, da die Verbindung und die Datenbankbeziehung mit dieser Einstellung nicht alleine funktionieren. (Probleme wurden ab dem 07.11. angesprochen, aber behoben. Es funktioniert nicht + das Umschreiben von tsconfig funktioniert, aber ...)
Ändern Sie grob gesagt tsconfig.app.json und app.module.ts wie folgt.
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