couchdb - PouchDB bulkdocs 不会重新添加带有 {new_edits:false} 的文档,如果它之前被删除
问题描述
本地 PouchDB 与远程 Couch 同步。遥控器具有根据某些规则引发未经授权的错误的验证。当denied
事件发生时,我编写了以下代码来获取远程文档并在本地复制它,以便将本地文档更改恢复为它们在服务器上的状态 -
function processUnauthorizedError(err, self) {
const { doc: { error, id } = {} } = err;
if (error !== "unauthorized") {
return;
}
// Replace/insert remote doc into local
// https://stackoverflow.com/a/34570061/2790937
return self.remoteDB.get(id, {revs: true})
.then(doc => {
Logger.log({doc});
return self.localDB.bulkDocs([doc], {new_edits: false})
})
.then((result) => {
Logger.log({result}); // Empty array, see https://github.com/pouchdb/pouchdb/issues/5775
return notifyUnauthorized(id, self)
})
}
此策略基于此建议 - https://stackoverflow.com/a/34570061/2790937。但是,如果文档在本地被删除,则 localdbbulkDocs
操作不会将其插入回来。它没有错误地完成并返回空数组,这是本期预期的 - https://github.com/pouchdb/pouchdb/issues/5775。为了确认没有插入文档,我做了一个后续allDocs
操作以及一个get
本地操作。
有什么建议么?
该代码在最新的 Chrome (81) 中运行并使用最新的 PouchDB (pouchdb-browser) 7.1.1。
解决方案
推荐阅读
- pytorch - 推理时,如何使用 EfficientDet-Pytorch 设置目标参数?
- java - 如何获取响应数据以在 JsonObjectRequest 函数之外使用
- java - 谓词拆分和并行处理
- php - 将两个不同的对象放在一起
- angular - 如何删除 Apollo-Angular 及其所有依赖项?
- javascript - 原型函数和普通函数的不同输出
- splunk - Splunk 警报创建
- javascript - Knex.js 迁移问题:因`关系“knex_migrations”不存在而失败`
- python - scipy.signal.firwin 低通滤波器的作用类似于高通滤波器
- flutter - 在 wifi 信号强度、哔声等颤动的同时播放声音背景