Html 如何强制数据库真正删除记录?

Html 如何强制数据库真正删除记录?,html,cordova,couchdb,web-sql,Html,Cordova,Couchdb,Web Sql,我正在创建一个类似这样的数据库: var db = new PouchDB('my_db', { auto_compaction: true, revs_limit: 1, adapter: 'websql' }); 然后我创建并删除了一些记录: db.put({ _id: '1'}); db.put({ _id: '2'}); db.put({ _id: '3'}); db.get('1') .then(function(doc) { db.remove(doc)

我正在创建一个类似这样的数据库:

var db = new PouchDB('my_db', 
        { auto_compaction: true, revs_limit: 1, adapter: 'websql' });
然后我创建并删除了一些记录:

db.put({ _id: '1'});
db.put({ _id: '2'});
db.put({ _id: '3'});

db.get('1')
.then(function(doc) {
    db.remove(doc)
});

db.get('2')
.then(function(doc) {
    db.remove(doc)
});

db.get('3')
.then(function(doc) {
    db.remove(doc)
});
从我对文档的阅读来看,这是创建和记录的正确方法。
这似乎也表明这是一种做事的方式

但是,如果我使用Chrome inspector查看我的Web SQL DB,记录仍然存在:

我不相信这不是一个时间问题或诸如此类的问题,因为我可以用删除代码刷新,然后得到一个404Not_found错误


我的应用程序在本地数据库中创建并保存记录,直到这些记录已同步到中央服务器,此时我希望从本地数据库中清除这些记录。
我正在创建很多记录,如果我不能清除它们,那么最终我将耗尽设备上的空间(这是混合HTML5移动应用程序)

甚至可以从本地数据库中删除记录吗? 如果是,我该怎么做? 如果没有,我可以轻松地交换什么好的解决方案来代替数据库?
(我真的希望这是可能的,因为我已经走上了这条发展的道路,所以如果第一个问题的答案是否定的,那么我需要第三个问题的一个好答案)

正如上面的评论中所提到的,这还不可能,但正在进行()。但是,有一项工作您可以使用

解决方法是将数据库本地复制到另一个数据库,复制完成后,删除原始数据库。已删除的文档将不会被复制()


下面是一个工作演示: 如果在执行此代码后检查数据库的状态,它将只包含一个文档。请注意,有时我必须刷新浏览器才能看到数据库的最新状态(右键单击+刷新索引DDB是不够的)

如果要在测试时清理数据库,可以使用以下代码段:

['testdb', 'tmpdb'].forEach((d) => { new PouchDB(d).destroy() })

还没有,但它正在工作中,这里是跟踪这一问题的主要问题感谢Kul的回答--关于.purge()实现是否有任何新的信息?好的-再次感谢你的回答--我想我会使用这个解决方案--但是我如何进行到新的PockDB的本地复制?使用
new PockDB()创建另一个db
像平常一样使用新的数据库名和同步。您可以使用
内存
适配器来避免创建另一个数据库(但随后必须同步两次)。因此,您的工作流程如下:(1)从原始数据库同步到内存中的数据库(2)删除原始数据库并再次创建它(3)从内存数据库同步到原始数据库。我不应该使用CouchDB-我只需要一个本地数据库,我自己已经将同步编码到一个中央数据库-因此我没有“正常”同步-你能给我指一些代码,用于从一个本地数据库同步到另一个数据库吗?而不是创建远程数据库(如链接页面上所做的那样)创建另一个本地dbsweet!谢谢-我会试一试-如果成功,如果我用代码更新您的答案,然后将其标记为正确,您高兴吗?
['testdb', 'tmpdb'].forEach((d) => { new PouchDB(d).destroy() })