0

jQueryとを使用して、Cloudant 上の CouchDB に接続しようとしています。jQuery.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 の 1 つについて何かを確認するには、次のように取得します。

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

これが正しい URI です。では、たとえば、「toxtweet」データベース内のドキュメントの数を取得するにはどうすればよいでしょうか? 例を試してもうまくいきません。

更新 Firefox ではなく Chrome でページを表示すると、次のエラーが表示されます。

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 にアクセスしたことはありませんが、何らかの方法でデータベースを公開していない限り、まずどこかにログインする必要があると思います。

jquery.couch が送受信している https リクエストとレスポンスを Chrome または Firefox で確認しましたか?

ドキュメントの数を取得するには、通常、次のような 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 には、HTTPDまたはNginxをリバース プロキシとして使用するための 2 つの優れた実行方法があり、どちらも Cloudant でホストされているデータベースに対して実行する場合に適用する必要があります。

HTH

サイモン

于 2012-12-17T11:14:42.843 に答える