Couchdb 在不复制逻辑的情况下查询影响视图输出范围的更改
假设我有一个存储日志消息的数据库。每条消息都包含优先级、日期和消息的信息。应用程序应该能够查询日志消息,这些消息可能受优先级约束,并按日期排序。因此,我可以创建一个名为Couchdb 在不复制逻辑的情况下查询影响视图输出范围的更改,couchdb,Couchdb,假设我有一个存储日志消息的数据库。每条消息都包含优先级、日期和消息的信息。应用程序应该能够查询日志消息,这些消息可能受优先级约束,并按日期排序。因此,我可以创建一个名为by_priority的视图,其键为[doc.priority,doc.date],然后我可以通过以下请求轻松查询优先级值至少为$X的所有邮件: GET$database/\u design/$design/\u view/by priority?startkey=[$X]&endkey=[{}] 现在,我想扩展应用程序,以便在新
by_priority
的视图,其键为[doc.priority,doc.date]
,然后我可以通过以下请求轻松查询优先级值至少为$X
的所有邮件:
GET$database/\u design/$design/\u view/by priority?startkey=[$X]&endkey=[{}]
现在,我想扩展应用程序,以便在新消息到达时自动获取具有给定条件的新消息。我可以通过添加名为min\u priority
的过滤器来实现这一点,该过滤器选择优先级至少为$X
(通过prio
查询参数传递)的消息,并发出以下请求:
GET$database/\u changes?filter=$design/max\u priority&prio=$X
但这意味着我必须在服务器(通过筛选函数)和客户端(通过构造startkey
和endkey
的值)上复制选择逻辑(最小、最大、优先级范围、优先级和日期)
真的有必要实现相同的逻辑两次吗
或者至少可以在视图和过滤器函数之间共享为文档生成键值对的代码吗?这样,我就可以为每个视图提供一个通用的筛选函数,该函数调用view函数并接受
startkey
和endkey
参数。我还需要一种方法来访问CouchDB的密钥比较算法。有没有可以从JavaScript访问的功能?我认为目前不可能在视图和/或过滤器之间消除重复代码,尽管可以想象一个查询服务器可以让您访问这些类型的功能