我一直在玩CouchDB和CouchApp一段时间了。我正计划将它用于我正在开发的新网站项目。
从可扩展性的角度来看,我喜欢CouchApp的想法。
缺点是没有服务器端代码,有些东西(比如oAuth身份验证)在客户端很难做到。在某些时候,我确信我需要一些描述的服务器端代码 - 我想你可以看看Node.js,但不想在这一点上。
使用CouchDB作为后端解决方案,而您的页面是从另一台服务器提供的,这也很合适,但缺点是跨域问题阻止您轻松使用内置的CouchDB API。
那么有没有人能解决这两个缺点之一?
你能不能以某种方式为CouchApp提供服务器端代码(甚至PHP会赢),或者你能以某种方式使用一个单独的网站来服务你的网页但是能够克服跨域问题吗?
我真的试图让解决方案尽可能干净(并且可扩展),而CouchDB的一个好处是超级简单,超快速的API,所以我真的不想使用它的包装器 - 除非它不妨碍性能/可扩展性。
欢迎您的意见。
答案 0 :(得分:16)
因为CouchDB使用基于HTTP的API,所以有几种方法可以将服务器端代码(node.js,PHP等)与CouchApp“混合和匹配”。
我将选项分为三类:
您可以在下面找到有关_changes feed和_external处理程序的更多信息:
为了它的价值,我将在周三PHP and CouchDB Webcast讨论这三个选项。您的问题将成为网络广播结束时讨论的重要补充。
我很想知道你的CouchApp结果如何,以及你如何解决上面提到的问题。
答案 1 :(得分:1)
BigBlueHat的优秀答案,但我还有一个可能的选项:
克服跨域问题,从而允许您从任何类型的Web服务器提供页面,并允许浏览器直接与CouchDB(可以在另一台服务器上)进行交互。
由浏览器强制执行的跨域限制并不难以解决。 我所知道的两种主要方法是:JSONP和CORS。
JSONP将每个请求伪装成“脚本”请求(因为脚本请求免于跨域规则)。它仅适用于GET,而不适用于POST或PUT或其他任何内容。你可以用jQuery做到这一点。
CORS是“跨源资源共享”,它只是一个必须在服务器上实现的特殊HTTP头(在本例中为couchdb),它告诉浏览器它没关系 - 它不介意服务请求来自另一个域名。我已对此进行了测试,但它确实有效,但可能存在安全问题 - 我不确定。
所以......我不知道这是否是一个好主意,但技术上可以(至少部分地)克服CouchDB的跨域限制。有没有人使用这种类型的设置构建系统?