CouchDB 的服务器端任务
Posted
技术标签:
【中文标题】CouchDB 的服务器端任务【英文标题】:Server side tasks for CouchDB 【发布时间】:2012-02-04 19:50:18 【问题描述】:我需要在 CouchDB 中定期执行一些后台任务(猜测可以通过 cronjob 完成,只是对一些原生 CouchDB 方法感到好奇)。我还需要从 server 上的 HTTP 检索一些资源(例如,通过 OAuth2 进行身份验证并将令牌永久存储在某个文档中)。是否可以以某种方式实现(例如将 nodejs 与 CouchDB 集成。我真的不喜欢在 couchdb 前面有 nodejs webserver 的想法,我试图避免那个额外的层并使用 couchdb 作为 HTTP 服务器,数据库支持和服务器端业务逻辑)。
【问题讨论】:
【参考方案1】:CouchDB 是一个数据库。它的主要工作是存储数据。是的,它有一些 javascript 部分,但这些部分是为了帮助它构建索引,或与 JSON 进行转换。
要求 CouchDB 运行定期 cron 式任务或获取 HTTP 资源,类似于要求 mysql 运行定期 cron 式任务或获取 HTTP 资源。不幸的是,这是不可能的。
您不一定需要 HTTP 服务器。您可以构建一个 2.1 层架构,像以前一样使用浏览器到 CouchDB 的直接连接;但是你自己运行你的周期性或持久的后端程序,它们只是以普通用户(可能是管理员用户)的身份读写 CouchDB 数据。
【讨论】:
好的,杰森,这是有道理的。但是我怎么能用 CouchDB 实现两步 OAuth2 身份验证。当用户点击网页上的Authenticate with OAuth2
链接时,我们正在调用带有一些参数的 OAuth2 提供程序 URL。然后 OAuth2 提供者回调我们的 URL,传递一些我们用来获取 access_token 的授权码,我们稍后需要所有对 OAuth2 提供者的请求。是否可以在服务器上执行 HTTP 调用?
好吧,这又是一个愚蠢的问题,由仍在考虑 J2EE 方式的人提出;)我们将进行用户代理流 OAuth2 身份验证。之后,该令牌将保存到 CouchDB 以供将来使用。以上是关于CouchDB 的服务器端任务的主要内容,如果未能解决你的问题,请参考以下文章
CouchDB 是服务器端 Javascript 的一个例子吗?
如何避免 CouchDB 和 noSQL 数据库出现类似 SQL 的注入问题?