我正在构建一个具有离线功能的 web 应用程序。我正在使用webcache
和的组合pouchDB
来实现它。
目前我正在测试针对数据库损坏的恢复机制。我的前提是,由于 pouchDB 是在客户端运行的,它暴露给任何错误或故意破坏数据库的人。也可能在错误或类似情况下,数据库可能会损坏。然后,如果数据库损坏,除非它被 webapp 检测到并清理,否则它将永远无法正常工作。
测试很简单: - 创建 PouchDB:
var dbOptions = { 自动压缩:假, 缓存:假 }; var db = new PouchDB('myDB',dbOptions);
- 使用开发者工具删除部分数据库。
- 在加载应用程序时,它会尝试读取所有文档:
db.allDocs({include_docs : true}, function(_err,_response){ (此处有特定代码) }
就是在这个时候"Uncaught TypeError: Cannot set property '_rev' of undefined "
被抛出。我试图捕捉异常并使用 pouchDB 提供的承诺,但没有一个奏效。
有没有小伙伴遇到过类似的问题?你是怎么解决的?
编辑: 当 PouchDB 返回 500 内部错误时,应用程序应该如何从中恢复?我试图破坏数据库
db.destroy(function(err,info){console.log(err||info);}
但它不起作用。它也返回 500 内部错误。