简体   繁体   中英

AngularJS. $resource, MongoLab, Restful API - What's wrong with my sample?

I am new to AngularJS and loving it as I learn it. I am trying to figure out how to communicate with MongoLab from AngularJS using $resource and RESTful API. I have the following two files:

index.html:
-----------
<!DOCTYPE html>
<html lang="en">
<head>
    <title>MongoLab Connectivity Test</title>
    <script src="angular.js"></script>
    <script src="angular-resource.js"></script>
    <script src="app3.js"></script> 
    <link rel="stylesheet" href="bootstrap.css" />
    <link rel="stylesheet" href="bootstrap-theme.css" />
</head>
<body ng-app="myModule">
    <div ng-controller="display">
      <p>{{data.message}}</p>
    </div>
</body>
</html>

app3.js:
--------
var myModule = angular.module('myModule', ['ngResource']);

myModule.controller('display', function($scope, personService) {
    $scope.data = personService.query();
});

myModule.constant({
            DB_BASEURL: "https://api.mongolab.com/api/1/databases/db1/collections",
            API_KEY: "<MyAPIKey>"
        })

myModule.factory('personService', ['$resource', 'DB_BASEURL', 'API_KEY', 
    function($resource, DB_BASEURL, API_KEY) 
    {
        return $resource
            (DB_BASEURL+'/persons/:id' 
            ,{id: "@id" apiKey: API_KEY}
            );
    }
]);

When I try it, I get the following output:

{{data.message}}

I am not sure what I am doing wrong. Hoping to get some help.

A better way to connect would be : https://github.com/pkozlowski-opensource/angularjs-mongolab

[copying the text from documentation AS IT IS]

Usage instructions

Firstly you need to include both AngularJS and the angular-mongolab.js script : https://raw.githubusercontent.com/pkozlowski-opensource/angularjs-mongolab/master/src/angular-mongolab.js

Then, you need to configure 2 parameters:

MongoLab key (API_KEY)
database name (DB_NAME)

Configuration parameters needs to be specified in a constant MONGOLAB_CONFIG on an application's module:

var app = angular.module('app', ['mongolabResourceHttp']);

app.constant('MONGOLAB_CONFIG',{API_KEY:'your key goes here', DB_NAME:'angularjs'});

Then, creating new resources is very, very easy and boils down to calling $mongolabResource with a MongoDB collection name:

app.factory('Project', function ($mongolabResourceHttp) {
    return $mongolabResourceHttp('projects');
});

As soon as the above is done you are ready to inject and use a freshly created resource in your services and controllers:

app.controller('AppController', function ($scope, Project) {
  Project.all().then(function(projects){
    $scope.projects = projects;
  });
});

Also, you may check out the blog here for even simpler implementation : http://asad.io/angularjs-with-mongolab/

Use the $http module by Angular and Mongolab REST API

For GET request,

 $http.get('https://api.mongolab.com/api/1/databases/DATABASE_NAME/collections/COLLECTION_NAME?apiKey=YOUR_API_KEY') .success(function(data) { console.log(data) } 

For POST request,

 $http.post('https://api.mongolab.com/api/1/databases/DATABASE_NAME/collections/COLLECTION_NAME?apiKey=YOUR_API_KEY', $scope.data, { headers: { 'Content-Type': 'application/json; charset=UTF-8' } }) .success(function() { console.log('Data saved successfully') } 

More on http method support documentation - http://docs.mongolab.com/data-api/#reference

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM