使用jQuery访问Cloudant数据库

时间:2012-12-14 23:07:05

标签: javascript jquery couchdb cloudant

我正在尝试使用jQueryjQuery.couch.sj

连接到Cloudant上的CouchDB

但是,我甚至无法获得有关我的数据库的最基本信息。例如,以下代码不会向控制台打印任何内容。

代码

<script>
$.couch.urlPrefix ="https://acharya.cloudant.com";
$.couch.info({
success: function(data) {
    console.log(data);
}
});
</script>

我在looked the online documentation但无济于事。

如果我输入

var db= $.couch.db("toxtweet");
console.debug(db);

看到我的一个CouchDB,我得到了:

Object { name="toxtweet",uri="https://acharya.cloudant.com/toxtweet/", compact=function(), 
more...}

这是正确的URI。那么,我如何获得“toxtweet”数据库中的文档数量?尝试这个例子是行不通的。

更新 如果我在Chrome中查看该页面而不是Firefox,我会看到以下错误。

XMLHttpRequest cannot load https://acharya.cloudant.com/. Origin http://tox.sinaiem.org is not  
allowed by Access-Control-Allow-Origin.

我认为Cloudant是一个绕过同源策略的CouchApp。

2 个答案:

答案 0 :(得分:1)

我还没有使用jquery访问Cloudant,但我希望你必须先登录某个地方,除非你以某种方式公开你的数据库。

您是否在Chrome或Firefox中检查了jquery.couch发送和接收的https请求和响应?

要获取文档数量,通常会有一个带有reduce方法的视图,如下所示:

// map
function(doc) {
 emit(doc.id, 1);
}

// reduce
function(keys, values, rereduce) {
  return sum(values);
}

请点击此处了解详情What is the CouchDB equivalent of the SQL COUNT(*) aggregate function?

我建议您在jquery.couch

中执行等效请求之前尝试使用Futon

<强>更新

您是否尝试过JSONP来解决跨域问题? 见这里:http://support.cloudant.com/customer/portal/articles/359321-how-do-i-read-and-write-to-my-cloudant-database-from-the-browser-

答案 1 :(得分:1)

CouchApp / Cloudant不绕过同一原产地政策。如果你在Cloudant上有CouchApp,你可以在你的域下访问它(例如https://acharya.cloudant.com/DB_NAME/_design/DESIGN/index.html),如果你想在另一个域上访问它,你需要一个像AndyD建议的反向代理。

CouchDB wiki有两个很好的运行方式,可以使用HTTPDNginx作为反向代理,两者都应该在针对Cloudant托管的数据库运行时适用。

HTH

西蒙