TypeORM с Nativescript, как использовать существующую базу данных? - PullRequest
0 голосов
/ 09 ноября 2018

Привет, я занимаюсь разработкой приложения с использованием Nativescript-Angular и TypeORM, и у меня уже есть база данных SQLite, созданная с данными, поэтому я пытаюсь связать соединение моей typeorm с существующей базой данных SQLite. Но это не работает, я не знаю почему.

Это мой код для подключения typeorm.

@Injectable()
export class ConnectionService {
constructor() {}
initConnection() {

(async () => {
  try {
    const connection = await createConnection({
      name: "database.db",
      database: "database.db",
      type: "nativescript",
      driver,
      entities: [
        //"~/entities/*.ts"
        Answer,
        AnswerType,
        Consumption,
        Institution,
        Profile,
        Question,
        Questionnaire,
        Section,
        Session,
        Solution,
        Substance,
        Unit,
        User
      ],
      logging: true
    });

    console.log("Connection Created");

    // setting true will drop tables and recreate
    await connection.synchronize(false);

    console.log("Synchronized");

    //Create a repository to load from the database
    let answerRepository = connection.getRepository(Answer);
    //Select all from Answer
    let allAnswers = await answerRepository.find();
    console.log("All the answers are: ", allAnswers);
  } catch (err) {
    console.log("Error");
    console.error(err);
  }
  })();
 }
}

Это мой app.component.ts

import { Component } from "@angular/core";
import { ConnectionService } from 
"./services/local/connection.service";
const SQLite = require("nativescript-sqlite");

@Component({
   selector: "ns-app",
   templateUrl: "app.component.html"
 })
export class AppComponent {
    constructor() {
        if (!SQLite.exists("database.db")) {
        SQLite.copyDatabase("database.db");
        console.log("Database copied");
        } else {
          console.log("Database has been already copied!");
    }
    new SQLite("database.db", function(err, db) {
       db.get("select * from answers where id=?", [1], 
    function(err, row) {
        console.log("Row of data was: ", row);
      });
    });
   //TypeORM
    let connection = new ConnectionService();
    connection.initConnection();
    }
}

И, наконец, это мой вывод

JS: Database has been already copied!
JS: Row of data was:  [1, Hombre, 2018-06-07 18:35:16, 2018-06-07 
18:35:16]
JS: Angular is running in the development mode. Call 
enableProdMode() to enable the production mode.
JS: Connection Created
JS: query:  BEGIN TRANSACTION
JS: query:  SELECT * FROM "sqlite_master" WHERE "type" = 'table' 
AND "name" IN ('answer', 'answer_type', 'consumption', 
'institution', 'profile', 'question', 'questionnaire', 'section', 
'session', 'solution', 'substance', 'unit', 'user')
JS: query:  SELECT * FROM "sqlite_master" WHERE "type" = 'index' 
AND "tbl_name" IN ('answer', 'answer_type', 'consumption', 
'institution', 'profile', 'question', 'questionnaire', 'section', 
'session', 'solution', 'substance', 'unit', 'user')
JS: query:  PRAGMA table_info("answer")
JS: query:  PRAGMA index_list("answer")
JS: query:  PRAGMA foreign_key_list("answer")
 JS: query:  PRAGMA table_info("answer_type")
JS: query:  PRAGMA index_list("answer_type")
JS: query:  PRAGMA foreign_key_list("answer_type")
JS: query:  PRAGMA table_info("consumption")
JS: query:  PRAGMA index_list("consumption")
JS: query:  PRAGMA foreign_key_list("consumption")
JS: query:  PRAGMA table_info("institution")
JS: query:  PRAGMA index_list("institution")
JS: query:  PRAGMA foreign_key_list("institution")
JS: query:  PRAGMA table_info("profile")
JS: query:  PRAGMA index_list("profile")
JS: query:  PRAGMA foreign_key_list("profile")
JS: query:  PRAGMA table_info("question")
JS: query:  PRAGMA index_list("question")
JS: query:  PRAGMA foreign_key_list("question")
JS: query:  PRAGMA table_info("questionnaire")
JS: query:  PRAGMA index_list("questionnaire")
JS: query:  PRAGMA foreign_key_list("questionnaire")
JS: query:  PRAGMA table_info("section")
JS: query:  PRAGMA index_list("section")
JS: query:  PRAGMA foreign_key_list("section")
JS: query:  PRAGMA table_info("session")
JS: query:  PRAGMA index_list("session")
JS: query:  PRAGMA foreign_key_list("session")
JS: query:  PRAGMA table_info("solution")
JS: query:  PRAGMA index_list("solution")
JS: query:  PRAGMA foreign_key_list("solution")
JS: query:  PRAGMA table_info("substance")
JS: query:  PRAGMA index_list("substance")
JS: query:  PRAGMA foreign_key_list("substance")
JS: query:  PRAGMA table_info("unit")
JS: query:  PRAGMA index_list("unit")
JS: query:  PRAGMA foreign_key_list("unit")
JS: query:  PRAGMA table_info("user")
JS: query:  PRAGMA index_list("user")
JS: query:  PRAGMA foreign_key_list("user")
JS: query:  COMMIT
JS: Synchronized
JS: query:  SELECT "Answer"."id" AS "Answer_id", 
"Answer"."description" AS "Answer_description", 
"Answer"."created_at"AS "Answer_created_at", 
"Answer"."updated_at" AS "Answer_updated_at" FROM "answer" " 
Answer"
JS: todas las answers de la bd:  []

Таким образом, результат для запроса с typeorm пуст, но если я выполняю запрос только с sqlite, он работает, я думаю, что typeorm не связывает мою существующую базу данных с соединением. Любое решение?

...