我正在尝试使用jQuery
和jQuery.couch.sj
但是,我甚至无法获得有关我的数据库的最基本信息。例如,以下代码不会向控制台打印任何内容。
代码
<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。
答案 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有两个很好的运行方式,可以使用HTTPD或Nginx作为反向代理,两者都应该在针对Cloudant托管的数据库运行时适用。
HTH
西蒙