2017-10-13 70 views
1

我有一个简单的问题 - 在Ionic 3中将数据库提供者类的私有成员变量中的打开数据库打开,还是在每次查询数据库时调用create会更好?Ionic 3 SQLite - 数据库作为私有成员变量与创建每个查询的新数据库?

I.e. ...

private db: SQLiteObject; 

constructor() { 
    this.sqlite.create(...) 
    .then((db: SQLiteObject) => { 
    this.db = db; 
    }) 
} 

queryMethod() { 
    db.executeSql(sql, {}); 
} 

...或者

constructor() { 

} 

queryMethod() { 
    this.sqlite.create(...) 
    .then((db: SQLiteObject) => { 
    db.executeSql(sql, {}); 
    }); 
} 

我看到与第一种方法的问题,因为有数据库可能没有被它的访问之前创建了一个小概率。

回答

0

是的,因为这是Promise你总是需要使用2nd选项。那么你不会有任何问题。这意味着您需要在解决承诺后执行查询。

以下模式始终遵循:

queryMethod() { 
    this.sqlite.create(...) 
    .then((db: SQLiteObject) => { 
    db.executeSql(sql, {}); 
    }); 
}