Я использую Ionic 4 / Angular 6 с Electron для запроса .mdb файлов (мс доступа дБ) , поэтому я использовал database-js-adodb пакет для подключения к базе данных и выполнения запросов.
Моя проблема заключается в том, что я вызываю метод select из home.page.ts
для запроса базы данных с помощью database-js-adodb пакет, мое приложение стекается в бесконечный цикл перекомпиляции.
ПРИМЕЧАНИЕ: Я использую тот же код в приложении Ionic 3 / Angular 5 с электроном, и он работает как шарм
ORM.service.ts
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class ORMService {
// tslint:disable-next-line
private ADODB = window.require('database-js-adodb');
public connection: any;
constructor() {
this.connect();
}
private connect() {
this.connection = this.ADODB.open({
Database: 'src/assets/data.mdb'
});
}
select(tableName: string, fields: string | string[], whereStatment? : string): Promise<any> {
return new Promise( async (resolve, reject) => {
fields = typeof fields == 'object' ? fields.join(',') : fields;
let queryString = whereStatment ?
`SELECT ${fields} FROM ${tableName} WHERE ${whereStatment}` :
`SELECT ${fields} FROM ${tableName}`;
try {
let rows = await this.connection.query(queryString);
resolve(rows);
} catch (error) {
console.log(error);
reject(error);
} finally {
await this.connection.close();
}
})
}
}
home.page.ts
import { Component } from '@angular/core';
import { ORMService } from '../services/orm/ORM.service';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage {
constructor(private ORM: ORMService) {
this.ORM.select('users','*').then((rows) => {
console.log(rows);
});
}
}