10

これを検索しましたが、couchDBをangular.jsフレームワークに直接接続できる場合は適切な回答が得られませんでした

また

そのためにはnode.jsの助けを借りる必要があります。

4

5 に答える 5

18

私はCornerCouchと呼ばれるAngularJSモジュールを作成しました。これは、特にCouchDB用に調整することでAngularJS$resourceのアプローチを改善します。これは、AngularJSの$httpサービスに基づいています。特にアプリ固有のAngularJSコントローラーでは、そのようにしてきれいなJavaScriptコードを作成することになりました。

CornerCouchAngularJSモジュール

私の知る限り、直接電話をかけると3つの選択肢があります。

  • CouchDBアタッチメントから直接htmlアプリをロードします(CouchAppアプローチ)

  • Jettyプロジェクト(Javaアプリスタック)に含まれている透過プロキシを使用する

  • GET経由でのみアクセスしますが、CouchDBサーバーでJSONPを有効にした後はJSONPを使用します

他のすべては、クロスサイトスクリプティングの制限によって取得されません。

于 2012-12-13T01:15:26.193 に答える
7

私はangular.jsの経験はありませんが、Googleバズの例を見ると、JSONを提供するリソースを処理する方法があるようです。これがまさにCouchDBであるため、node.jsを関与させる必要はないと思います。

すべてのCouchDB機能はHTTPリクエストを介してアクセスできるため、必要に応じてAJAX呼び出しを実行することで適切に機能する必要があります。angle.service 。$resourceが適切な候補のようです。

于 2011-07-01T16:16:27.367 に答える
3

アシュビン、これを聞いてくれてありがとう。私もこの問題に苦しんでいます。

$ resourceを使用してAngularJSからローカルCouchDBを呼び出す方法はまだわかりません。これは、次のような完全なローカルホストURLを使用しているためです。

http://localhost:5984/<dbname>/_all_docs

AngularJSのすべてのドキュメントと例には、ローカルパス名が示されています。彼らは実際には別のWebサービスに連絡する方法を教えていないか、少なくとも私は役立つ説明を見つけていません:)

これが私が理解しやすいjQueryを使用する方法です。これをcouch.jsという名前のファイルに配置し、生き物(犬、猫など)のCouchDBに接続しました。実際のモジュール(「app」)はアプリの他の場所で定義されているので、「app」という名前の変数に入れて、次のようにCouchコントローラーを追加しました。

(function () {
    'use strict';
    var app = angular.module('app');
    app.controller('CouchCtrl', function ($scope,$http,$resource) {
        var all_critters = 'http://localhost:5984/critters/_all_docs?callback=?';
        $.getJSON(all_critters, function(json) {
            $scope.$apply(function(){
                $scope.all_critters = json;
            });
        });
        $scope.getAllCritters = function() {
            return $scope.all_critters;
        };
    });
}());

?callback =?を追加しました JSONPの場合、ローカルで作業しているときにブラウザーでローカルホストのセキュリティの問題を回避するため、CouchDBプリファレンスでJSONP=trueを設定しました。

htmlページで、crittersDBをバインディングに入れて、この呼び出しの結果を確認してください。

<ul ng-controller="CouchCtrl">
    <h5>Critters</h5>
    <p>There are currently {{all_critters.total_rows}} critters.</p>
    <li ng-repeat="(key,value) in all_critters">
        {{key}} - {{value}}
    </li>
</ul>

誰かが実際のAngularJS$resourceコードを投稿して、CouchDBからAngularJSアプリにデータをプルするこのjQUery.getJSONの方法を複製できれば幸いです。

于 2012-09-17T02:41:38.087 に答える
1

秘訣は、couchdbへのクエリを含むページは、couchdb自体と同じアドレスとポートから提供される必要があるということです。これは、couchdbによってhtmlを提供するか、htmlをホストするWebサーバーとcouchdbの両方の傘として機能するプロキシをインストールすることで実現できます。

于 2012-09-17T06:36:20.260 に答える
0

AngularJS Webサイトの例を変更して、mongolabの代わりにCouchDBを使用しました。jsfiddleはこちらhttp://jsfiddle.net/WarwickGrigg/dCCQF/を、githubリポジトリはこちらhttps://github.com/telanova/angularjs-couchdbをご覧ください。私は角張った初心者です。$resourceに頭を悩ませるのに苦労しましたが、うまく機能しているようです。

$scope.projects = ProjectCouch.get({q:'_all_docs', include_docs: 'true', limit: 10});

angular.module('CouchDB', ['ngResource']).
    factory('ProjectCouch', function($resource) {
        var ProjectCouch = $resource(':protocol//:server/:db/:q/:r/:s/:t',
                                     {protocol: 'http:', server: 'localhost:5984', db:'projects'}, {update: {method:'PUT'}   
                           }
   ); 

   ProjectCouch.prototype.update = function(cb) {
    return ProjectCouch.update({q: this._id},
        this, cb);
  };

  ProjectCouch.prototype.destroy = function(cb) {
      return ProjectCouch.remove({q: this._id, rev: this._rev}, cb);
  };

  return ProjectCouch;
});
于 2013-05-12T22:06:15.923 に答える