CouchDB stale=update_after 完成通知
CouchDB stale=update_after completion notification
有没有办法通过推送或拉取的方式接收关于视图何时更新的通知?理想情况下,我希望能够 return 向用户提供现有数据,然后在他们的新内容可用时通知他们。
看起来没有明确的方法可以完成您的要求,但我为您提供了一些想法:
1) 轮询_active_tasks
您可以尝试检查服务器的活动任务列表,查找匹配的条目:type === indexer
和 design_document === _design/your-design-doc
。如果您的视图需要几分钟或更长时间才能完成更新,那么值得一试。 (当然我从来没有真正尝试过这个,但理论上它应该有效)这需要你不断地轮询服务器。
2) 通过 HEAD
轮询视图本身
发出第一个请求后,您可以开始使用 HEAD
请求进行轮询,等待 ETag
header 更改。 (这表明视图索引已更改)HEAD
请求已尽可能少,因此这可能是比 #1)
更好的选择
3) 发出 2 个 GET 请求(而不是使用 stale=update_after
)
您总是可以发出 2 个请求,第一个是 stale=ok
为了提高速度。然后您只需在不允许过时的结果之后立即发出请求,这将需要更长的时间。它远不如 "flashy",但这可能是最好的。
有没有办法通过推送或拉取的方式接收关于视图何时更新的通知?理想情况下,我希望能够 return 向用户提供现有数据,然后在他们的新内容可用时通知他们。
看起来没有明确的方法可以完成您的要求,但我为您提供了一些想法:
1) 轮询_active_tasks
您可以尝试检查服务器的活动任务列表,查找匹配的条目:type === indexer
和 design_document === _design/your-design-doc
。如果您的视图需要几分钟或更长时间才能完成更新,那么值得一试。 (当然我从来没有真正尝试过这个,但理论上它应该有效)这需要你不断地轮询服务器。
2) 通过 HEAD
轮询视图本身
发出第一个请求后,您可以开始使用 HEAD
请求进行轮询,等待 ETag
header 更改。 (这表明视图索引已更改)HEAD
请求已尽可能少,因此这可能是比 #1)
3) 发出 2 个 GET 请求(而不是使用 stale=update_after
)
您总是可以发出 2 个请求,第一个是 stale=ok
为了提高速度。然后您只需在不允许过时的结果之后立即发出请求,这将需要更长的时间。它远不如 "flashy",但这可能是最好的。