Nwjs和WebSql - 无法删除现有数据库?

时间:2015-11-16 23:48:06

标签: javascript database node.js chromium web-sql

我正在使用Nwjs创建桌面应用程序。到目前为止,一切都像魅力,我真的很喜欢这整个概念。

但我需要数据库功能,在Nwjs文档中,WebSql是建议列表中的第一个数据库。我已经设法编写我的方法来创建,插入等,但我找不到删除我意外创建的数据库的方法。

这让我想知道WebSql是否适合创建生产桌面应用程序。或者我应该切换到另一个数据库模块吗?

示例代码:

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

    if(!db){
        alert('no table!');
    }

    console.log(db);

    /**** DATABASE FUNCTIONS ****/

   // Create table if not exists
    db.transaction(function (tx) {
        tx.executeSql( 'CREATE TABLE IF NOT EXISTS companies (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(255), street VARCHAR(128), nr VARCHAR(12), city VARCHAR(128))' );
    });


    function insertCompanyInDB(name, street, nr, city) {
        db.transaction(function (tx) {
            tx.executeSql('INSERT INTO companies (name, street, nr, city) VALUES (?, ?, ?, ?)', [name, street, nr, city]);
        });
    }

1 个答案:

答案 0 :(得分:0)

未来用户的

,如https://www.w3.org/TR/webdatabase/#databases

中所述
  

无法枚举或删除此API中可用于源的数据库。

但由于nwjs应用程序作为chrome扩展程序,因此您可以删除所有webSql数据库(清除websql存储),如下所示:

1 - 在您的 package.json 中添加:

"name": "myapp",
"permissions": [
    "browsingData"
  ]

2-从javascript调用此命令

chrome.browsingData.removeWebSQL({since:0, originTypes:{extension:true}});

注意经过大量测试后我个人建议使用LocalStorage和JSON.stringify复杂对象或SQlite用于关系数据结构