如何在Mac OSX中将SproutCore连接到CouchDB

问题描述

|| 我正在使用SproutCore从NetTuts + premium的教程中查询Mac OSX(10.6.7)上的CouchDB数据库数据库名称为微博。查询解析为以下字符串:
\"http://localhost:5984/microblog/_design/posts/_view/posts?descending=true\"
如果直接在浏览器的地址栏中键入此查询,则会得到一个不错的json答案。但是通过SproutCore应用程序,我收到一条错误消息:
405 Method Not Allowed
这是为什么?那是因为SC的:4020耗尽了,而CouchDB的:5984用尽了吗?有任何想法吗?     

解决方法

        由于存在Javascript跨域法规,因此不允许您从浏览器中查询任何任意URL。如果您从localhost:4020加载了萌芽页面,则禁止与该主机上的任何其他主机或端口联系。 为了克服这个问题,通常使您的发芽主机托管到后端。您可以通过在萌芽构建文件中包含类似以下内容的代理语句来完成此操作
proxy \"/microblog\",:to => \"localhost:5984\"
它将所有请求转发到localhost:4020 / microblog到后端localhost:5984 / microblog。可以想象,这可能会导致无法将sc应用程序中的url设置为所需值的问题,常见的情况是,您的sc应用程序也被命名为“ microblog”,则上述proxy指令将导致您的sc应用程序网址被覆盖。 要解决该问题,您可以在sc应用程序中使用另一个网址来联系后端,例如/ db,然后在proxy指令中使用url参数来重写目标url:
proxy \"/db\",:to => \"localhost:5984\",:url => \"microblog\"
然后,所有对localhost:4020 / db的请求都将转发到localhost:5984 / microblog,并且不再干扰您在localhost:4020 / microblog上的sc应用程序。