更改:仅过滤来自OTHER DB实例的更改

时间:2015-02-02 14:46:36

标签: couchdb pouchdb

我的应用有一个与中央couchdb同步的本地pouchdb。

当应用从更改Feed收到更改时,应用会更新模型和ui。

这应仅适用于本地未发生的变更:

当更改在本地(由用户,在ui中)发生时,应用程序使用更改的属性更新模型。然后它将(db.put)更新的对象放入本地pouch-database(触发change事件)。当put的响应到来时,应用程序会更新模型中的rev属性。

问题1 是否可以将db.changes过滤为仅在本地pouchdb实例中未生成的更改?

因为我找不到上述问题的解决方案,所以我现在将本地模型对象与db.changes提供的更改文档进行比较(通过比较字符串化值)。

问题是:来自db.changes的更改事件发生在db.put的响应到来之前!此时我的应用还没有更新模型对象的转速,这使得很难比较两个对象 - 它们总是不同的,因为转换是不同的。

我必须补充一点,对象的结构很灵活,因为用户可以配置自己的数据结构。所以我不能(轻松)只比较可能已经改变的字段。如果没有更好的方法,我将不得不根据这个想法破解解决方案。

所以问题2 是:是否有可能让更改事件等到db.put的响应到达之后?

我想我可以使用setTimeout,但这似乎非常hacky。

非常感谢帮助。

1 个答案:

答案 0 :(得分:2)

这是PouchDB中的已知错误,但现在应该修复:请参阅this commit

您可以尝试the nightly build,看看这是否还是个问题?如果是这样,请随时在Github上提交另一个问题。谢谢!

编辑:要回答您的第一个问题,这有点棘手。我认为最好的方法是在文档中插入一些信息来跟踪文档的生成位置。 (例如,您可以使用Math.random()为您的用户提供随机ID,将其存储在localStorage或_local doc中,然后将其包含在每个文档中。)