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

时间:2011-07-27 10:48:00

标签: javascript jquery couchdb

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

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


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

我按照这个tut创建了一个数据库,我可以使用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 Method Not Allowed

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

2 个答案:

答案 0 :(得分:3)

相同的起源安全政策

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

  

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

     

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

使用couchapp

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

教程

当您了解couchapp的工作原理时,您可以使用this tutorial

后续步骤

我想弄明白......如果你发现任何好事,请分享!祝你好运!

编辑:我刚刚找到this tutorial

答案 1 :(得分:1)

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

只需按照此问题发布的答案: Couchdb cors problems