我正在尝试将CouchDB与HTML /独立REST架构结合使用。也就是说,没有其他应用服务器,除了CouchDB和ajax风格的javascript调用CouchDB。
看起来交叉脚本是一个问题。之前我正在使用Cloudkit / Tokyo Cabinet,似乎需要的回调函数将其搞砸了。
现在我正在尝试使用CouchDB并遇到同样的问题。
以下是我的问题:
1)是否存在这些问题,因为像CouchDB或CloudKit这样的REST / JSON存储在与我的网页不同的端口上运行?它们都在本地运行,并从“localhost”调用。
2)我应该让CouchDB托管我的页面并提供HTML吗?
3)我该怎么做?文件似乎不那么清楚......
谢谢, 亚历
答案 0 :(得分:10)
有一个简单的答案:将静态HTML存储为CouchDB文档的附件。这样您就可以直接从CouchDB提供HTML。
有一个命令行工具可以帮助您执行此操作,称为CouchApp
本书Mikeal linked to还有一章(管理设计文档)介绍了如何使用CouchApp来完成这项工作。
答案 1 :(得分:7)
3)您可以使用CouchDB shows生成HTML(或任何内容类型)
答案 2 :(得分:6)
让CouchDB提供/生成您的HTML有很多好处。
首先,页面(HTTP资源)与数据或数据查询相关联,CouchDB知道何时在页面更改时更新etag。这意味着如果你将nginx放在CouchDB前面并说“缓存内容”,你将得到你通常需要自己构建的所有免费缓存。
我会推动nginx>在CouchDB前面的apache因为Apache在处理并发连接方面并不是那么出色而且nginx + erlang(CouchDB)非常棒。
此外,您可以在JavaScript中编写这些视图,这些视图在CouchDB书籍http://books.couchdb.org/relax/或使用我的视图服务器http://github.com/mikeal/couchdb-pythonviews的Python中都有很好的记录,但我还没有真正记录,但我会很快就会到达:)
我希望其他语言的视图服务器也开始在视图服务器协议中实现新功能,以便任何人都可以在CouchDB中编写独立的应用程序。
答案 3 :(得分:3)
我认为一种方法是通过Apache中的mod_proxy。它将请求从Apache转发到Couchdb,因此可以解决跨脚本问题。
# Configuration file for proxy
ProxyVia ON
ProxyPass /couchdb http://<<couchdb host>>:5984/sampleDB
ProxyPassReverse /couchdb http://<<couchdb host>>:5984/sampleDB
答案 4 :(得分:0)
我不禁想到在表示层(HTML)和模型(CouchDB)之间需要一些层。
这样您就可以调解请求,提供额外的功能和设施。目前,您似乎将持久化对象直接渲染到表示层,并且您将无法更改或扩展系统的行为。
采用model-view-controller架构会使您的模型与表示层隔离,并为您提供一些前进的灵活性。
(我承认我无法就您的跨网站脚本问题提供建议)