node.js
、express.js
、mongoDB
およびに基づいて、URL を介して動作する API を作成しましたangular.js
。
私のAPIは次のように呼び出されます:
app.get('/api/posts/:query', api.postsQuery);
したがって、 と入力するlocalhost:3000/api/posts/<whateverquery>
と、mongoDB は関連するすべての JSON をブラウザーに吐き出すので、問題なく動作します。
ただし、これを Angular フロントエンドにリンクしようとしていますが、問題が発生しています。ユーザーがフォームを検索して、データベースが正しいレコードを返すようにしたいと考えています。これが私のコントローラーです:
function indexCtrl($scope, $http, $resource) {
$scope.itemSearch = $resource('http://localhost\\:3000/api/posts/:query',
{query:''}, {get:{method:'JSONP'}});
$scope.doSearch = function(){
$scope.posts = $scope.itemSearch.get({query:$scope.searchTerm});
console.log($scope.posts[1]) // returns undefined
}
}
私の問題は、 を実行する$scope.doSearch
と、Chrome のリソース パネルにクエリが次のように表示されることです。実際には正しいデータが読み込まれていますが、それ自体が にアタッチされていません$scope.posts
。
これは、コールバック関数が必要なためだと思います。使用してみcallback: JSON_CALLBACK
ましたが、クエリ/APIが台無しになります(呼び出し?callback=...
の最後にaが追加され$resource
、クエリが壊れるため)。
それを機能させるためにここで何ができるかについてのアイデアはありますか? 問題はコールバックの欠如ですか? おそらく、後でワイルドカードを許可するために、app.get
呼び出しに正規表現を追加できます>:query