Как вернуть возвращаемые данные с помощью Ionic sqlite - PullRequest
0 голосов
/ 04 июня 2018

Я ионная программа, которая использует sqlite для хранения данных.Когда я возвращаю данные в представление, он ничего не возвращает.

У меня настроена служба для получения данных.Это выглядит как

read(){
    this.sqlite.create({
      name: DB_NAME,
      location: 'default'
    })
    .then((db: SQLiteObject) => {  
      db.executeSql('CREATE TABLE IF NOT EXISTS todos(id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(32), datetime VARCHAR(32))', {})
        .then(() => console.log("Created Table OR NOT"))
        .catch(e => this.presentAlert(e));

      db.executeSql('SELECT * FROM todos ORDER BY id DESC', {})
      .then((response) => {
        if(response.rows.length > 0){
          for(var i=0; i < response.rows.length; i++){
            this.my_todos.push({
              id:response.rows.item(i).id, 
              name:response.rows.item(i).name, 
              datetime:response.rows.item(i).datetime
            })
          }
        }       
        //this.presentAlert(JSON.stringify(this.my_todos));
        return this.my_todos;
      })
      .catch(e => this.presentAlert(JSON.stringify(e)));
    })
    .catch(e => this.presentAlert(JSON.stringify(e)));
  }

В файле home.ts я пытаюсь получить доступ к сервису, как

this.todos = this.todoService.read()

Когда я захожу this.todos на моей консоли.Это ничего не возвращает.Может кто-нибудь помочь мне? ...

1 Ответ

0 голосов
/ 04 июня 2018

// Привет, // Вы не можете сделать это this.todos = this.todoService.read ().// Вы должны написать обещание получить данные из sqlite и использовать их в своем // компоненте.// Я ожидаю, что функция чтения находится в служебном файле (todoService.ts).Измените это как //this.

//Hi,
//You cannot do this this.todos = this.todoService.read().
//You should write promises to get data from sqlite and use them in your //component.
//I expect read function is in the service file(todoService.ts). Change it like //this.

    public read() {
return new Promise((resolve,reject) => {
var db = new SQLite();
        
        var query = "CREATE TABLE IF NOT EXISTS todos(id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(32), datetime VARCHAR(32))";
        db.create({
          name: "data.db",
          location: "default"
        }).then((db1: SQLiteObject) => {
          db1.executeSql(query,[])
          .then((res) => {
            let todos = [];
            if(res.rows.length > 0 ) {
              todos.push(res.rows.item(0))
            }
            resolve(todos)
          },(error) => {
            reject(error);
          });
})

}
//  The promise returns an array of objects


In the page component 
// declare this
 public itemList : Array<Object>;
// In the constructor
this.itemList = [];

this.todoService.read().then((result) => {
this.itemList = <Array<Object>> result;
// you will get the retrieved data from sqlite from this array
console.log(this.itemList)
})
)


// This should work Please update me in case of any issues
...