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

Nwjs and WebSql - can't delete existing databases?

我正在使用 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]);
        });
    }

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

中所述,供未来用户使用

There is no way to enumerate or delete the databases available for an origin from this 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 用于关系数据结构