ошибка ссылки: не удается прочитать свойство 'executetesql' из неопределенного в ionic - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу сохранить данные 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...