如何使用JavaScript / jQuery将新数据发布到CouchDB

我在下面的问题中找到了答案。

我需要在apache中设置一个反向代理,通过将以下行添加到我的虚拟主机中大约需要2分钟;
ProxyPass / couchdb / http:// dojo:5984 /
由于原始策略相同,您无法跨端口发布数据。 我知道这适用于域而不是不同的端口,因此您设置了反向代理。


我想知道如何使用JavaScript或jQuery将数据发布到couchDB。

我按照这个tut创建了一个数据库,我可以使用curl发布和获取数据,一切正常。 我使用下面的curl示例。

我也可以使用jQuery获取数据,但我不知道如何POST到CouchDB

curl -X GET http://127.0.0.1:5984/mycouchshop/_all_docs 。
curl -X POST http://127.0.0.1:5984/mycouchshop/ -d @ person.json -H“Content-Type:application / json”

我可以使用jQuery获取和显示数据。 下面的代码工作正常。

$.ajax({ url : 'http://couchdb:5984/mycouchshop/_design/peoples/_view/people', type : 'GET', dataType : "jsonp", success : function(json) {} }); 

但是发布数据导致405方法不允许

  $.ajax({ url : 'http://couchdb:5984/mycouchshop/', data : {"forename": "Bob", "surname": "McHamster", "type": "person"}, contentType : "application/json", type : 'POST', dataType : "json", success : function(resp) {} }); 

同源的安全策略

我不是couchapp专家,但我遇到了同样的问题。 问题是您正在进入跨域限制,您的应用程序从一个端口提供,而couchdb在另一个端口上访问。 来自couchapp.org :

我从人们开始使用CouchDB编写Ajax应用程序时得到的一个常见问题是“当我尝试使用jQuery查询CouchDB时,它不起作用。” 通常情况下,他们的文件系统上有一个index.html文件,它试图对CouchDB服务器进行Ajax调用。 在向他们解释相同的原始安全策略后,他们开始明白这意味着CouchDB需要提供HTML(而不是直接从文件系统加载到浏览器中)。

因此,最简单的CouchApp只是一个HTML文件,直接由CouchDB提供,它使用Ajax从CouchDB加载和保存数据。

使用couchapp

似乎需要使用couchapp(http://couchapp.org/page/index)将所有应用程序文件“推送”到couchdb服务器。 我在Mac上工作,所以我使用了Standalone可执行文件 。 有安装couchapp的说明

教程

当您了解couchapp的工作原理时,您可以使用本教程

下一步

我想弄清楚它们……如果你发现任何好事,请分享! 祝好运!

编辑:我刚刚发现了这个教程

解决跨源资源共享( CORS )问题的另一个解决方案是更改本地CouchDB安装的某些设置。

只需按照此问题上的答案: Couchdb cors问题