Как настроить приложение узла для доступа к PostgreSQL с помощью typeorm? - PullRequest
0 голосов
/ 30 марта 2020

Я нашел веб-сайт https://github.com/typeorm/typeorm, который в несколько шагов создает приложение для машинописного текста, способное подключаться к базе данных PostgreSQL. Я следовал за шагами и изменил пример, чтобы подключиться к моей собственной существующей базе данных и успешно извлечь содержимое одной таблицы. Однако моя цель - создать службу REST, развернутую в nodeJS, которая сможет обеспечить доступ к постоянным данным, хранящимся в базе данных PostgreSQL. Я нашел другой сайт с примером (более 2 частей) всего, что я хотел сделать, и многое другое. https://itnext.io/production-ready-node-js-rest-apis-setup-using-typescript-postgresql-and-redis-a9525871407 Часть 2 была go в интеграции PostgreSQL. Кажется, что Часть 2 никогда не была опубликована, поэтому я остался с приложением для узла, которое выглядит как хорошее начало. Поэтому я попытался самостоятельно интегрировать недостающие фрагменты, чтобы код, развернутый в службе REST узла, мог получить доступ к моей базе данных. Хотя код работает, как и ожидалось, при использовании этого сценария для его запуска:

"start": "ts-node src/index.ts"

Этот сценарий вызывает ошибку в источнике сущности в операторе импорта для извлечения обязательных классов typeorm:

"dev": "tsc-watch --onSuccess \"node ./build/src/index.js\""

Вот ошибка:

/Users/jboss/projects/typescript/backend/src/entity/Banners.ts:1
import { Column, Entity, BaseEntity } from "typeorm";
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at wrapSafe (internal/modules/cjs/loader.js:983:16)
    at Module._compile (internal/modules/cjs/loader.js:1033:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1103:10)
    at Module.load (internal/modules/cjs/loader.js:914:32)
    at Function.Module._load (internal/modules/cjs/loader.js:822:14)
    at Module.require (internal/modules/cjs/loader.js:956:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Function.PlatformTools.load (/Users/jboss/projects/typescript/backend/node_modules/typeorm/platform/PlatformTools.js:114:28)
    at /Users/jboss/projects/typescript/backend/node_modules/typeorm/util/DirectoryExportedClassesLoader.js:39:69
    at Array.map (<anonymous>)

Это содержимое ormconfig:

{
   "type": "postgres",
   "host": "localhost",
   "port": 5432,
   "username": "jboss",
   "password": "bluegrass",
   "database": "video",
   "synchronize": false,
   "logging": true,
   "entities": [
      "src/entity/**/*.ts"
   ],
   "migrations": [
      "src/migration/**/*.ts"
   ],
   "subscribers": [
      "src/subscriber/**/*.ts"
   ],
   "cli": {
      "entitiesDir": "src/entity",
      "migrationsDir": "src/migration",
      "subscribersDir": "src/subscriber"
   }
}

Вот пакет. json Содержимое:

{
   "name": "backend",
   "version": "0.0.1",
   "description": "Awesome project developed with TypeORM.",
   "devDependencies": {
      "ts-node": "3.3.0",
      "@types/node": "^8.0.29",
      "typescript": "3.3.3333"
   },
   "dependencies": {
      "pg": "^7.18.2",
      "reflect-metadata": "^0.1.13",
      "typeorm": "^0.2.24"
   },
   "scripts": {
      "dev": "tsc-watch --onSuccess \"node ./build/src/index.js\"",
      "start": "ts-node src/index.ts",
      "typeorm": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js"
   }
}

Вот tsconfig. json content:

{
   "compilerOptions": {
      "lib": [
         "es5",
         "es6"
      ],
      "target": "es5",
      "module": "commonjs",
      "moduleResolution": "node",
      "outDir": "./build",
      "emitDecoratorMetadata": true,
      "experimentalDecorators": true,
      "sourceMap": true
   }
}

Я надеюсь, что кто-нибудь подскажет мне, что мне нужно сделать, чтобы сделать эту работу.

...