HTML5 Websql-如何使用离子3和4角

HTML5 Websql-如何使用离子3和4角

问题描述:

我试图把的WebSQL API与离子3,用角4HTML5 Websql-如何使用离子3和4角

var db = openDatabase('mydb', '', 'my first database', 2 * 1024 * 1024); 

当我调用的openDatabase,它显示的openDatabase不是功能和页面没有加载。但在浏览器中,我可以看到创建的表格。

有没有一种方法可以使用它角4和离子3?

我加了cordova-sqllite-storage。但是我无法在Angular4上调用它。

任何示例?我不想使用SQLLite与离子本地,因为这个插件不运行在浏览器上。

您可以使用以下方法。

let db = (<any> window).openDatabase('mydb', '', 'my first database', 2 * 1024 * 1024); 
+3

_why_你相信这就是答案? _它是如何工作的?仅仅告诉某人在没有任何语境或意义的情况下改变他们的代码并不能帮助他们了解他们做错了什么。 – GrumpyCrouton

+0

请描述您的答案以更好地了解此 – sandeep

我真的鼓励,看看如何添加插件: https://ionicframework.com/docs/native/#Add_Plugins_to_Your_App_Module

在我们的例子中,我们想通过我们的WebSQL实施开发(浏览器测试)的目的交换本地的SQLite。

{provide: SQLite, useClass: SQLiteMock} 

为此,我们必须在提供者部分的app.module.ts中添加上述行。

下面的代码保存为外部打字稿文件,并实现SQLite插件(本例中为'create()')的默认方法。 SQLiteObject正在实现executeSql()方法。

import {SQLiteDatabaseConfig} from "@ionic-native/sqlite"; 

    class SQLiteObject { 
    db: any; 

    constructor(db: any) { 
     this.db = db; 
    }; 

    executeSql(queryStatement: string, params: any): Promise<any> { 
     return new Promise((resolve, reject) => { 
     this.db.transaction((tx) => { 
      tx.executeSql(queryStatement, params, 
      (tx, result) => { 
       resolve(result) 
      }, 
      (error) => reject(error)); 
     }); 
     }); 
    } 
    } 

    export class SQLiteMock { 
    public create(config: SQLiteDatabaseConfig): Promise<SQLiteObject> { 
     var db = (<any> window).openDatabase('mydb', '', 'my first database', 2 * 1024 * 1024); 

     return new Promise((resolve, reject) => { 
     resolve(new SQLiteObject(db)); 
     }); 
    } 
    } 

现在u能正常使用遵循离子教程 https://ionicframework.com/docs/native/sqlite/

+0

请考虑添加并解释为什么此代码有效。 –