これを検索しましたが、couchDBをangular.jsフレームワークに直接接続できる場合は適切な回答が得られませんでした
また
そのためにはnode.jsの助けを借りる必要があります。
これを検索しましたが、couchDBをangular.jsフレームワークに直接接続できる場合は適切な回答が得られませんでした
また
そのためにはnode.jsの助けを借りる必要があります。
私はCornerCouchと呼ばれるAngularJSモジュールを作成しました。これは、特にCouchDB用に調整することでAngularJS$resourceのアプローチを改善します。これは、AngularJSの$httpサービスに基づいています。特にアプリ固有のAngularJSコントローラーでは、そのようにしてきれいなJavaScriptコードを作成することになりました。
私の知る限り、直接電話をかけると3つの選択肢があります。
CouchDBアタッチメントから直接htmlアプリをロードします(CouchAppアプローチ)
Jettyプロジェクト(Javaアプリスタック)に含まれている透過プロキシを使用する
GET経由でのみアクセスしますが、CouchDBサーバーでJSONPを有効にした後はJSONPを使用します
他のすべては、クロスサイトスクリプティングの制限によって取得されません。
私はangular.jsの経験はありませんが、Googleバズの例を見ると、JSONを提供するリソースを処理する方法があるようです。これがまさにCouchDBであるため、node.jsを関与させる必要はないと思います。
すべてのCouchDB機能はHTTPリクエストを介してアクセスできるため、必要に応じてAJAX呼び出しを実行することで適切に機能する必要があります。angle.service 。$resourceが適切な候補のようです。
アシュビン、これを聞いてくれてありがとう。私もこの問題に苦しんでいます。
$ 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の方法を複製できれば幸いです。
秘訣は、couchdbへのクエリを含むページは、couchdb自体と同じアドレスとポートから提供される必要があるということです。これは、couchdbによってhtmlを提供するか、htmlをホストするWebサーバーとcouchdbの両方の傘として機能するプロキシをインストールすることで実現できます。
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;
});