mysql - NestJS typeorm - לא מצליח ליצור ישות


אני מנסה להוסיף יישות של Idea ל-TypeOrm שלי (מוגדר ל-mysql), ונראה שהייבוא לא עובד. עם הוספת הקובץ, ה-TypeOrm לא מאותחל בהצלחה.

התקנתי מחדש את חבילת typeorm, ואין לי מושג מאיפה להתחיל בדיבוג. אני עוקב אחר מדריך (https://www.youtube.com/watch?v=EHlhvy-fh90), שבו השגיאה הזו לא מופיעה. סטיתי ממנו על ידי החלפת מסד נתונים PostgreSQL במסד נתונים MySQL שרץ בדוקר.

היה לי קצת קשיים בהגדרת החיבור בין node ל-mysql, ולבסוף החלטתי להפעיל mysql 5 בתוך Docker כדי להתמודד עם שגיאות אימות (בהתבסס על התשובה הזו: https://stackoverflow.com/a/50167617/9043642). ללא קובץ idea.entity.ts, החיבור עובד (עם orm), אז אני לא מצפה שיהיה בעיה במסד הנתונים.

כך נראה הקובץ idea.entity.ts שלי. הוא בפועל עוקב אחרי הדוגמה שנמצאת בתיעוד (https://docs.nestjs.com/techniques/database). גם כאשר מעתיקים ומדביקים, הדוגמה בתיעוד נותנת את אותה השגיאה בכל מקרה.

import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  CreateDateColumn,
} from 'typeorm';

@Entity()
export class IdeaEntity {
  @PrimaryGeneratedColumn('uuid') id:string;

  @CreateDateColumn() created:Date;

  @Column('text') idea:string;

  @Column('text') description:string;
}

אני מקבל את השגיאה הבאה בזמן ההרצה

[Nest] 14034   - 07/02/2019, 1:00 PM   [TypeOrmModule] Unable to connect to the database. Retrying (1)... +19ms
[0] /home/miko/node/ideas/src/idea/idea.entity.ts:2
[0] import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
[0]        ^
[0] 
[0] SyntaxError: Unexpected token {
[0]     at Module._compile (internal/modules/cjs/loader.js:718:23)
[0]     at Object.Module._extensions..js (internal/modules/cjs/loader.js:785:10)
[0]     at Module.load (internal/modules/cjs/loader.js:641:32)
[0]     at Function.Module._load (internal/modules/cjs/loader.js:556:12)
[0]     at Module.require (internal/modules/cjs/loader.js:681:19)
[0]     at require (internal/modules/cjs/helpers.js:16:16)
[0]     at Function.PlatformTools.load (/home/miko/node/ideas/node_modules/typeorm/platform/PlatformTools.js:107:28)
[0]     at /home/miko/node/ideas/node_modules/typeorm/util/DirectoryExportedClassesLoader.js:30:69
[0]     at Array.map (<anonymous>)
[0]     at Object.importClassesFromDirectories (/home/miko/node/ideas/node_modules/typeorm/util/DirectoryExportedClassesLoader.js:30:10)

למעשה, חיבור למסד הנתונים נכשל. שוב, ללא ישות הרעיון הנוכחת החיבור בסדר. התוצאה הצפויה היא [InstanceLoader] TypeOrmCoreModule dependencies initialized. איך אוכל ליצור בהצלחה ישות כזו?

תשובה #1

סוף סוף זה הפך להיות קובץ ormconfig.json מבולגן. ודא שהוא תואם לפורמט לפי: https://github.com/nestjs/nest/blob/master/integration/typeorm/ormconfig.json

תשובה #2

הוסף את הנתיב של הישויות כתקיית ה-dist שלך

{
    "type":"postgres",
    "host":"localhost",
    "port":"5432",
    "username":process.env.USERNAME,
    "password":process.env.PASSWORD,
    "database":process.env.DATABASE,
    "synchronize":true,
    "logging":true,
    "entities": ["dist/**/**.entity{.ts,.js}"]    
}