I've created an API that works via a url, built on node.js, express.js, mongoDB and angular.js.
My API is called like this:
app.get('/api/posts/:query', api.postsQuery);
So if I type localhost:3000/api/posts/<whateverquery>, mongoDB spits out all the pertinent JSON to my browser, so this is working just fine.
However, I'm trying to link this up to my Angular front-end, and it's causing issues. I want the user to be able to search into a form and have my database return the correct records. Here's my controller:
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
}
}
My issue is that when I run $scope.doSearch, I see the query in Chrome's resources panel like this:
so the correct data is indeed being loaded, but it's not attaching itself to $scope.posts.
I have the feeling this might be because I need a callback function; I tried using callback: JSON_CALLBACK but that messes up my query/API (because it adds a ?callback=...to the end of the $resource call and this breaks the query).
Any ideas on what I can do here to get it working? Is the problem a lack of a callback? Perhaps I can add some regex to the app.get call, after :query to allow any wildcards afterward>