Skip json from Nodejs to Angularjs

1

I have a server running on Nodejs using the Sequelize for ORM, it works fine, but I needed to pass the query result to the angle. My server looks like this:

var express = require('express');
        var bodyParser = require('body-parser');

        var app = express();

        app.use(bodyParser.json());

        app.use(bodyParser.urlencoded({
            extended: true
        }));

        var Sequelize = require('sequelize');

        var sequelize = new Sequelize('nodejs', 'root', '', {
            loggin : console.log,
            define: {
                timestamps : false
            }
        });

        var dataTypes = require('sequelize');

        var user = sequelize.define('usuarios',{
            nome : dataTypes.STRING,
            descricao : dataTypes.STRING
        },{
            instanceMethods : {
                selectAll : function(sucesso, erro){
                    user.findAll({}, {raw : true}).success(sucesso).error(erro);
                },
                selectById : function(user_id, sucesso, erro){
                    user.find({where : {id : user_id}}, {raw : true}).success(sucesso).error(erro);
                },
                add : function(sucesso, erro){
                    var nome = this.nome;
                    var descricao = this.descricao;

                    user.build({nome : nome, descricao : descricao}).save().success(sucesso).error(erro);
                },
                update : function(user_id, sucesso, erro){
                    var id = user_id;
                    var nome = this.nome;
                    var descricao = this.descricao;

                    user.update({nome : nome, descricao : descricao}, {where : {id : id}}).success(sucesso).error(erro);
                },
                remove : function(user_id, sucesso, erro){
                    user.destroy({where : {id : user_id}}).success(sucesso).error(erro);
                }
            }   
        });

        var router = express.Router();

        router.route('/users')
        .get(function(req, res){
            var Usuarios = user.build();
            Usuarios.selectAll(function(data){
                if(data){
                    res.json(data);
                    console.log(data);
                }
                else{
                    res.send(401, 'NADA ENCONSTRADO');
                }
            }, function(error){
                res.send('USUARIO NAO ENCONTRADO');
            });
        });

        app.all('*', function(req, res, next) {
            res.header("Access-Control-Allow-Origin", "*");
            res.header('Access-Control-Allow-Methods', 'OPTIONS,GET,POST,PUT,DELETE');
            res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");
            if ('OPTIONS' == req.method){
                return res.send(200);
            }
            next();
        });
        app.use(router);

        app.listen(8080);
        console.log('rodando na 8080');

and not angular:

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

    app.controller('GreetingController', ['$scope','$http', function ($scope, $http) {

        $scope.usuarios = [];

        $scope.getPessoa = function(){
            $http.get('http://localhost:8080/users').    
              success(function(data, status, headers, config) {
                if (data.error == 0) {
                    console.log(data);
                  $scope.usuarios  = data; 
                  console.log('getPessoa', $scope.usuarios); 
                };                                           
              }).
              error(function(data, status, headers, config) {
                // log error
            });
        }

        $scope.getPessoa();



    }]);

What is the correct way to get this result?

    
asked by anonymous 19.04.2015 / 01:12

1 answer

1

The angular now uses promises. Then use your code as well.

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

    app.controller('GreetingController', ['$scope','$http', function ($scope, $http) {

        $scope.usuarios = [];

        var getPessoa = function(){
          
            $http.get('http://localhost:8080/users').then(function(retorno) {
            
              $scope.usuarios  = retorno.data; 
              console.log('getPessoa', $scope.usuarios);                          

            }).catch(function(erro) {

              console.error(erro.status);
              console.error(erro.statusText);
            });
        }

        getPessoa();
    }]);
    
07.06.2016 / 20:32