使用远程 couchdb 删除,不会触发相应的 pouchDB 更改事件
With remote couchdb delete, corresponding pouchDB change event not triggered
我正在使用 couchDb 作为远程主数据库。我正在使用 pouchDb 将它复制到浏览器中。然后进行实时同步,以便我的远程主数据库中的任何更改都可以在浏览器中同步。随着所有插入/更新更改事件被触发并且文档被更新。但是当我在 master 中删除文档时,删除未同步,而不是事件 "change" 事件在浏览器中被触发。
这里有什么我遗漏的吗?
this.db.replicate.from(this.remoteDb, {
view: this.remoteView,
});
this.db
.sync(this.remoteDb, {
live: true,
retry: true,
pull: true,
push: false,
view: this.remoteView,
})
.on("change", info => {
console.log("change from sync", info);
});
您似乎正在根据视图的映射函数进行过滤复制。
在这种情况下,如果您对文档执行 DELETE,文档内容将被删除,因此过滤器所需的信息将丢失,并且它不会包含在过滤的更改流中。
对于过滤复制,您应该通过更新包含属性 "_deleted":true
的文档来删除文档。在这种情况下,文档内容将被保留并可以包含在过滤后的更改流中。
我正在使用 couchDb 作为远程主数据库。我正在使用 pouchDb 将它复制到浏览器中。然后进行实时同步,以便我的远程主数据库中的任何更改都可以在浏览器中同步。随着所有插入/更新更改事件被触发并且文档被更新。但是当我在 master 中删除文档时,删除未同步,而不是事件 "change" 事件在浏览器中被触发。
这里有什么我遗漏的吗?
this.db.replicate.from(this.remoteDb, {
view: this.remoteView,
});
this.db
.sync(this.remoteDb, {
live: true,
retry: true,
pull: true,
push: false,
view: this.remoteView,
})
.on("change", info => {
console.log("change from sync", info);
});
您似乎正在根据视图的映射函数进行过滤复制。 在这种情况下,如果您对文档执行 DELETE,文档内容将被删除,因此过滤器所需的信息将丢失,并且它不会包含在过滤的更改流中。
对于过滤复制,您应该通过更新包含属性 "_deleted":true
的文档来删除文档。在这种情况下,文档内容将被保留并可以包含在过滤后的更改流中。