Я строю небольшой SPA с угловой и, поскольку я новичок в угловой, я использую учебное пособие по угловым диаграммам в качестве дорожной карты для моего приложения. все работает, находят, пока не получат данные из базы данных sqlite (из-за ограничений реализации использование любого другого типа внутреннего кода невозможно). учебник (https://angular.io/tutorial/toh-pt6) использует базу данных в памяти, которая, очевидно, мне не подходит. Мне нужна служба, которая извлекает данные из sqlite и может быть внедрена в компонент
компонент
import { Component, OnInit } from '@angular/core';
import { Areport } from '../../classess/areport';
import { ReportService } from "../../services/report.service";
@Component({
selector: 'app-daily-report',
templateUrl: './daily-report.component.html',
styleUrls: ['./daily-report.component.css']
})
export class DailyReportComponent implements OnInit {
reports : Areport[];
constructor(private reportService: ReportService) { }
getReports(): void {
this.reportService.getReports()
.subscribe( reports => this.reports = reports)
}
ngOnInit() {
this.getReports();
}
}
ReportService
import { Injectable } from '@angular/core';
import { Observable, of } from "rxjs";
import { Areport } from "../classess/areport";
import { MessageService } from "./message.service";
import { SqlitedbService } from "./sqlitedb.service";
@Injectable({ providedIn: 'root' })
export class ReportService {
constructor( private messageService: MessageService) { }
getReports(): Observable<Areport[]>{
this.messageService.add('reportService: fetched reports');
return of(SqlitedbService.R());
}
sqlite service
import { Injectable } from '@angular/core';
const sqlite3 = require('sqlite3').verbose();
let db = new sqlite3.Database('../../db/my.db');
let reports : any
db.all("SELECT * FROM reports",[],(err:any,rows:any)=>{
reports=rows;
})
@Injectable({
providedIn: 'root'
})
export class SqlitedbService {
constructor(){}
R(){ return reports};
}
Я не смог найти учебник по использованию sqlite в угловых, кроме этого (https://github.com/leota/electron-angular4-sqlite3/blob/master/src/app/app.component.ts), который я понятия не имею, что он делает, и ни того, ни другого не стоит пытаться добавить больше слоев, таких как электрон
для меня идеальным вариантом будет функция класса, которую я могу использовать в своем сервисе для возврата результата запроса и выполнения оператора вставки
также этот фрагмент кода JS прекрасно работает в узле, но я не знаю, как использовать его в угловых
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('./my.db')
db.each("SELECT * FROM reports", function(err, row) {
console.log(err+" "+row.id + ": " + row.txt);
});