0

我正在尝试使用jQuery和连接到我在 Cloudant 上的 CouchDBjQuery.couch.sj

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

代码

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

查看在线文档 但无济于事。

如果我输入

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。

4

2 回答 2

1

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

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

要获取文档数量,您通常会使用这样的 reduce 方法查看视图:

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

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

请参阅此处了解更多信息什么是 SQL COUNT(*) 聚合函数的 CouchDB 等效项?

在 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-

于 2012-12-14T23:26:37.003 回答
1

CouchApp 的/Cloudant 不会绕过同源策略。如果您在 Cloudant 上有 CouchApp,则可以在您的域下访问它(例如https://acharya.cloudant.com/DB_NAME/_design/DESIGN/index.html),如果您希望在另一个域上使用它,则需要反向正如 AndyD 所建议的那样。

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

高温高压

西蒙

于 2012-12-17T11:14:42.843 回答