2

用例

此处引用了复制收件箱或“空闲用户免费”:http: //blog.couchbase.com/what%E2%80%99s-new-apache-couchdb-011-%E2%80%94-part-three-new -功能复制

在每用户数据库的 CouchDB 架构中,最好只在用户登录时触发用户数据库和“收件箱”或“主”数据库之间的复制,这样您就不会通过在上运行连续复制来浪费资源一直处于非活动状态的数据库。此外,在我的应用程序设计中,我很想删除/归档非活动用户的数据库,并且只有在他们长时间不登录后才恢复/创建它。

问题

_session 数据库似乎不支持 _changes API 来监视新会话何时发生。我唯一能想到的是使用文档更新处理程序来更新用户文档上的“last_login”时间戳,然后在 _users 数据库上观察 _changes。我不喜欢这种方法,因为这意味着在客户端添加自定义逻辑。

问题:

用户登录时是否有用于触发事件的 CouchDB API?

4

1 回答 1

1

不存在这样的。CouchDB 目前有三种类型的身份验证:Basic、Cookie、OAuth(+ Facebook via plugin)。可能是,如果可以为 Cookie 和 OAuth 发出此类事件,但不能为 Basic 发出此类事件,因为它只是一个带有特殊标头的常规请求,其中包含针对某些 url 的凭据。换句话说,即使_session资源会在用户登录时引发一些事件,也可以解决这种逻辑。

不久前我们曾试图解决同样的问题,但我们认为它毫无价值,并不能解决我们的实际问题:我们仍然遇到用户是匿名用户而用户是已知用户的情况。

PS 但是您仍然可以解析 CouchDB 日志,在某些情况下引发事件并将它们传递给 redis 或 MQ 服务以进一步处理,但要注意磁盘空间很快耗尽。

于 2012-10-24T08:37:08.267 回答