Check deployd as a persistence api

http://www.youtube.com/watch?v=I_Jq1BVj6D0


Solved my headaches


2014-02-21 10:24 GMT+00:00 Toto RoToTo <[email protected]>:

> Hello,
>
> I am developing an Creative Cloud Extension using AngularJS.
> During the first step, I was using mocked services to display datas. This
> was working great.
> For the next step, I wanted my extension to consume real RESTful web
> services. (Using $resrouce module).
>
> So I created a NodeJS RESTful server, using Express and MongoDB as
> database provider.
>
> *Here it is my NodeJS server configuration (BackEnd):*
>
> var express = require('express'),
>     fabrics = require('./routes/fabrics');
>
> var app = express();
>  //CORS middleware
> var allowCrossDomain = function(req, res, next) {
>     res.header('Access-Control-Allow-Origin', "*");
>     res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
>     res.header('Access-Control-Allow-Headers', 'Content-Type');
>
>     next();
> }
>
> app.configure(function() {
>     app.use(express.bodyParser());
>     app.use(express.cookieParser());
>     app.use(express.session({ secret: 'cool beans' }));
>     app.use(express.methodOverride());
>     app.use(allowCrossDomain);
>     app.use(app.router);
> app.use(express.static(__dirname + '/public'));
> });
>
> app.get('/fabrics', fabrics.findAll);
> app.get('/fabrics/:id', fabrics.findById);
> app.post('/fabrics', fabrics.addFabric);
> app.put('/fabrics/:id', fabrics.updateFabric);
> app.delete('/fabrics/:id', fabrics.deleteFabric);
>
> app.listen(8080);
> console.log('Listening on port 8080...');
>
>
> *Here it iis route.js: *
>
> var mongo = require('mongodb');
>
> var Server = mongo.Server,
>     Db = mongo.Db,
>     BSON = mongo.BSONPure;
>
> var server = new Server('localhost', 27017, {auto_reconnect: true});
> db = new Db('fabricsdb', server);
>
> db.open(function(err, db) {
>     if(!err) {
>         console.log("Connected to 'fabrics' database");
>         db.createCollection('fabrics', {strict:true}, function(err,
> collection) {
>             if (err) {
>                 console.log("The 'fabrics' collection doesn't exist.
> Creating it with sample data...");
>                 populateDB();
>             }
>         });
>     }
> });
>
> exports.findById = function(req, res) {
>     var id = req.params.id;
>     console.log('Retrieving fabric: ' + id);
>     db.collection('fabrics', function(err, collection) {
>         //collection.findOne({'_id':new BSON.ObjectID(id)}, function(err,
> item) {
>  collection.findOne({'id':id.toString()}, function(err, item) {
>             res.send(JSON.stringify(item));
>         });
>     });
> };
>
> exports.findAll = function(req, res) {
>  console.log('Retrieving all fabric');
>     db.collection('fabrics', function(err, collection) {
>         collection.find().toArray(function(err, items) {
>             res.send(JSON.stringify(items));
>         });
>     });
> };
>
> exports.addFabric = function(req, res) {
>     var fabric = req.body;
>     console.log('Adding fabric: ' + JSON.stringify(fabric));
>     db.collection('fabrics', function(err, collection) {
>         collection.insert(fabric, {safe:true}, function(err, result) {
>             if (err) {
>                 res.send({'error':'An error has occurred'});
>             } else {
>                 console.log('Success: ' + JSON.stringify(result[0]));
>                 res.send(JSON.stringify(result[0]));
>             }
>         });
>     });
> }
>
> exports.updateFabric = function(req, res) {
>     var id = req.params.id;
>     var fabric = req.body;
>     console.log('Updating fabric: ' + id);
>     console.log(JSON.stringify(fabric));
>     db.collection('fabrics', function(err, collection) {
>         collection.update({'_id':new BSON.ObjectID(id)}, fabric,
> {safe:true}, function(err, result) {
>             if (err) {
>                 console.log('Error updating fabric: ' + err);
>                 res.send({'error':'An error has occurred'});
>             } else {
>                 console.log('' + result + ' document(s) updated');
>                 res.send(JSON.stringify(fabric));
>             }
>         });
>     });
> }
>
> exports.deleteFabric = function(req, res) {
>     var id = req.params.id;
>     console.log('Deleting fabric: ' + id);
>     db.collection('fabrics', function(err, collection) {
>         collection.remove({'_id':new BSON.ObjectID(id)}, {safe:true},
> function(err, result) {
>             if (err) {
>                 res.send({'error':'An error has occurred - ' + err});
>             } else {
>                 console.log('' + result + ' document(s) deleted');
>                 res.send(JSON.stringify(req.body));
>             }
>         });
>     });
> }
>
>
> /*--------------------------------------------------------------------------------------------------------------------*/
> // Populate database with sample data -- Only used once: the first time
> the application is started.
> // You'd typically not find this code in a real-life app, since the
> database would already exist.
> var populateDB = function() {
>
>     var printFabrics = [
>         {
>             "name": "art-deco",
>             "id": "1",
>             "comment": "art déco print",
>             "url": "img/fabrics/print/art-deco.jpg"
>         },
>         {
>             "name": "BlackHibiscus",
>             "id": "2",
>             "comment": "hibiscusprint",
>             "url": "img/fabrics/print/BlackHibiscus.jpg"
>         },
>         {
>             "name": "flowers",
>             "id": "3",
>             "comment": "flowersprint",
>             "url": "img/fabrics/print/flowers.jpg"
>         },
>         {
>             "name": "military",
>             "id": "5",
>             "comment": "militaryprint",
>             "url": "img/fabrics/print/military.jpg"
>         },
>         {
>             "name": "paisley",
>             "id": "6",
>             "comment": "paisleyprint",
>             "url": "img/fabrics/print/paisley.jpg"
>         },
>         {
>             "name": "palominobrown",
>             "id": "7",
>             "comment": "brownpalominoprint",
>             "url": "img/fabrics/print/Palomino_Brown.jpg"
>         },
>         {
>             "name": "skull",
>             "id": "8",
>             "comment": "skullprint",
>             "url": "img/fabrics/print/skull.jpg"
>         },
>         {
>             "name": "skullbandana",
>             "id": "9",
>             "comment": "skullbandanaprint",
>             "url": "img/fabrics/print/skullbandana.jpg"
>         },
>         {
>             "name": "coloredskull",
>             "id": "10",
>             "comment": "coloredskullprint",
>             "url": "img/fabrics/print/skull-color.jpg"
>         },
>         {
>             "name": "stars",
>             "id": "11",
>             "comment": "starsprint",
>             "url": "img/fabrics/print/stars.jpg"
>         },
>         {
>             "name": "tetris",
>             "id": "12",
>             "comment": "tetrisprint",
>             "url": "img/fabrics/print/Tetris.jpg"
>         },
>         {
>             "name": "coloredzigzag",
>             "id": "13",
>             "comment": "coloredzigzagprint",
>             "url": "img/fabrics/print/zigzag-color.jpg"
>         },
>         {
>             "name": "pinkzigzag",
>             "id": "14",
>             "comment": "pinkzigzagprint",
>             "url": "img/fabrics/print/zigzag-pink.jpg"
>         }
>     ];
>
>     db.collection('fabrics', function(err, collection) {
>         collection.insert(printFabrics, {safe:true}, function(err, result)
> {});
>     });
>
> };
>
> *In my Extension (FrontEnd), this is how I try to consume the rest
> service: *
>
> *Service*:
>
> var printFabricsServices = angular.module('printFabricsServices',
>  ['ngResource']);
>
>
> printFabricsServices.factory('restListService', [ '$resource',
> function($resource) {
>  return $resource('http://toto:8080/fabrics',{}, {
> query : {
>  method : 'GET',
>         isArray: true
> }
>  });
> } ]);
>
>
> *Controller:*
>
> var controllers = angular.module('printFabricControllers', []);
>
> controllers.controller('printFabricsListController', [
>         '$scope',
>  'restListService',
> function($scope, restListService) {
>
> $scope.printFabrics = [];
>  $scope.layout = 'grid';
>  //Using Rest
> $scope.getPrintFabricsUsingRest = function(){
>  console.log('using rest service');
> $scope.printFabrics = restListService.query();
>  };
> } ]);
>
>
> *And my application module definition:*
>
>
> var myApp = angular.module('myApp', [
>      'ngRoute',
>      'printFabricControllers',
>      'printFabricsServices'
>   ]);
>
> myApp.config([ '$routeProvider', '$httpProvider',
> function($routeProvider, $httpProvider) {
>  // header stuff
> $httpProvider.defaults.useXDomain = true;
>
> $routeProvider.when('/printFabrics', {
> templateUrl : 'partials/printFabricsList.html',
>  controller : 'printFabricsListController'
> }).when('/printFabrics/:id', {
> templateUrl : 'partials/printFabricsDetail.html',
>  controller : 'printFabricDetailController'
> }).otherwise({
> redirectTo : '/printFabrics'
>  });
> } ]);
>
>
>
> Something should be wrong with what I have done. Request sent. But I do
> not know if it is correctly formatted (headers?).
> Request never received by my RESTFul server.
>
> Any ideas about what is going wrong?
> Any help would be appreciated.
>
> Thx,
> Thomas.
>
>
>
>
>
>
>
>
>
>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "AngularJS" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/angular.
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to