Я хочу сохранить данные JSON (из URL) в SQLite. Данные JSON являются лишь примером, прежде чем я использую реальные данные. я использую ionic 3 и машинописный язык. Я делаю некоторые исследования и пробую большую часть учебника, чтобы решить эту проблему, но она все еще не может решить. надеюсь, ты сможешь помочь мне решить проблему. Спасибо. вот мой код
это network-engine.ts
import { Injectable } from '@angular/core';
import { SQLite, SQLiteObject } from '@ionic-native/sqlite';
import { SQLitePorter } from '@ionic-native/sqlite-porter';
import { HttpClient } from '@angular/common/http';
import { Platform } from 'ionic-angular';
/*
Generated class for the NetworkEngineProvider provider.
See https://angular.io/guide/dependency-injection for more info on providers
and Angular DI.
*/
@Injectable()
export class NetworkEngineProvider {
database: SQLiteObject;
constructor(public sqlitePorter: SQLitePorter, public sqlite: SQLite, public http:HttpClient, private platform: Platform) {
this.databaseDeveloper();
}
databaseDeveloper (response){
this.platform.ready().then(() => {
this.sqlite.create({
name: 'developers.db',
location: 'default',
})
.then((db: SQLiteObject) => {
this.isOpen = true;
db.executeSql("CREATE TABLE IF NOT EXISTS data (body VARCHAR(228) NULL, id INT NULL, title VARCHAR(79) NULL, user_id INT NULL)", {})
.then(res => console.log('table Created Successfully'))
.catch(e => console.log('table create err',e));
});
});
}
callServer(url): Promise<any>
{
let response : Promise<any>;
response = this.http.get(url).toPromise().then(responseData => responseData).catch(err => console.log('table create err',err));
return response.toPromise().then(article => {
return this.db.executeSql('INSERT INTO data(user_id, id, title, body) VALUES (?,?,?,?)', response)
}).then(()=> {
return this.db.executeSql('', {});
})
}
displayData() {
return new Promise((resolve, reject) => {
this.storage.executeSql('SELECT * from data', []).then((data) => {
let activityValues = [];
if (data.rows.length > 0) {
for(let i=0; i <data.rows.length; i++) {
activityValues.push(data.rows.item(i).id);
}
}
// alert(activityValues); // contains data
resolve(activityValues);
}, (error) => {
reject(error);
})
});
}
}
это home.ts
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { HttpClient } from '@angular/common/http';
import { NetworkEngineProvider } from '../../providers/network-engine/network-engine';
import { Platform } from 'ionic-angular';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
constructor(public navCtrl: NavController, public network: NetworkEngineProvider, public http:HttpClient, private platform: Platform) {
}
getServerData()
{
let url = "https://jsonplaceholder.typicode.com/posts";
let serverResponse : Promise <any>;
serverResponse = this.network.callServer(url);
serverResponse.then(data => {
console.log("Save" + JSON.stringify(data));
}).catch(err => {
console.log("Error " + err);
})
}
loadSaveData()
{
let dataResponse : Promise <any>;
dataResponse = this.network.displayData();
dataResponse.then(data => {
this.developer = data;
})
}
}
это home.html
<ion-header>
<ion-navbar>
<ion-title>
Json Parsing Basics and save Json
</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<button ion-button (click)="getServerData()">Get Data From Server</button>
<button ion-button (click)="loadSaveData()">Load Data</button>
<ion-list>
<ion-item *ngFor="let dev of developer">
{{dev.id}}
</ion-item>
</ion-list>
</ion-content>