Monday 5 June 2017

Not reaching .then() after post

I am having troubles with my MEAN stack app, I don't know why after doing the post (used a factory for this) the .then() code is no being executed. Here is the controller:

angular.module('AcontecimientoCtrl', ['AcontecimientoService'])
  .controller('AcontecimientoController', function($scope, Acontecimiento) {
    var pls = this;
    $scope.agregarAcontecimiento = function() {
        pls.errorMsg = false;
        Acontecimiento
          .create($scope.acontecimiento)
          .then(function(data) {
            $scope.acontecimiento = {};
            console.log(data.data.success);
            console.log(data.data.message);
            if (data.data.success) {
              pls.successMsg = data.data.message;
            } else {
                pls.errorMsg = data.data.message;
            }
        })
    };
});

this is the service:

angular.module('AcontecimientoService', [])
  .factory('Acontecimiento', function($http) {
    return {
        get : function() {
            return $http.get('/api/acontecimiento');
        },
        create : function(acontecimiento) {
            return $http.post('/api/acontecimiento', acontecimiento);
        },
        delete : function(id) {
            return $http.delete('/api/acontecimiento/' + id);
        }
    }
});

here it is the post method:

app.post('/api/acontecimiento', function(req, res) {
         // create a todo, information comes from AJAX request from Angular
         if (req.body.campo == '' || req.body.titular == '' || req.body.fecha == '' || req.body.tipo == '') {
           res.json({success: false, message: 'Campo, titular, fecha y tipo de operacion deben especificarse'});
         } else {
           Acontecimiento.create({
             campo : req.body.campo,
             titular : req.body.titular,
             fecha : req.body.fecha,
             tipo : req.body.tipo,
             brucelosis : req.body.brucelosis,
             vacas : req.body.vacas,
             toros : req.body.toros,
             novillitos : req.body.novillitos,
             vaquillonas : req.body.vaquillonas,
             terneras : req.body.terneras,
             terneros : req.body.terneros,
           }, function(err, acontecimiento) {
           if (err)
              res.sendfile('./public/views/index.html');
           });
         }
       });

And in case you need, this is my view:

<div class="row show-hide-message" ng-show="successMsg">
  <div class="alert alert-success">Nueva operacion guardada</div>
</div>
<div class="row show-hide-message" ng-show="errorMsg">
  <div class="alert alert-danger">Campo, titular, fecha y tipo de operacion deben especificarse</div>
</div>
<div class="jumbotron text-center">
    <form ng-submit="agregarAcontecimiento()" class="form-horizontal">
      <div class="form-group">
        <label class="control-label col-sm-2" for="campo">Campo</label>
        <div class="col-sm-9">
          <select class="form-control" id="campo" ng-model="acontecimiento.campo" required />
            <option>GUARANIMINI</option>
            <option>TRES MARIAS</option>
            <option>ESPADAÑAL</option>
          </select>
        </div>
      </div>
      <div class="form-group">
        <label class="control-label col-sm-2" for="titular">Titular</label>
        <div class="col-sm-9">
          <select class="form-control" id="titular" ng-model="acontecimiento.titular" required />
            <option>RUBEN CARLOS P.</option>
            <option>VICTOR HUGO P.</option>
          </select>
        </div>
      </div>
      <div class="form-group">
        <label class="control-label col-sm-2" for="fecha">Fecha</label>
        <div class="col-sm-9">
          <input type="date" id="fecha" class="form-control" ng-model="acontecimiento.fecha" required />
        </div>
      </div>
      <div class="form-group">
        <label class="control-label col-sm-2" for="tipo">Tipo</label>
        <div class="col-sm-9">
          <select class="form-control" id="tipo" ng-model="acontecimiento.tipo" required />
            <option>VACUNA</option>
            <option>VENTA</option>
            <option>MUERTE</option>
            <option>TRANSLADO</option>
            <option>CONTAR STOCK ACTUAL</option>
          </select>
        </div>
      </div>
      <div class="form-group">
        <label class="control-label col-sm-2" for="brucelosis">Brucelosis</label>
        <div class="col-sm-9">
          <input type="number" id="brucelosis" class="form-control" ng-model="acontecimiento.brucelosis"  />
        </div>
      </div>
      <div class="form-group">
        <label class="control-label col-sm-2" for="vacas">Vacas</label>
        <div class="col-sm-9">
          <input type="number" id="vacas" class="form-control" ng-model="acontecimiento.vacas"  />
        </div>
      </div>
      <div class="form-group">
        <label class="control-label col-sm-2" for="toros">Toros</label>
        <div class="col-sm-9">
          <input type="number" id="toros" class="form-control" ng-model="acontecimiento.toros"  />
        </div>
      </div>
      <div class="form-group">
        <label class="control-label col-sm-2" for="novillitos">Novillitos</label>
        <div class="col-sm-9">
          <input type="number" id="novillitos" class="form-control" ng-model="acontecimiento.novillitos"  />
        </div>
      </div>
      <div class="form-group">
        <label class="control-label col-sm-2" for="vaquillonas">Vaquillonas</label>
        <div class="col-sm-9">
          <input type="number" id="vaquillonas" class="form-control" ng-model="acontecimiento.vaquillonas"  />
        </div>
      </div>
      <div class="form-group">
        <label class="control-label col-sm-2" for="terneras">Terneras</label>
        <div class="col-sm-9">
          <input type="number" id="terneras" class="form-control" ng-model="acontecimiento.terneras"  />
        </div>
      </div>
      <div class="form-group">
        <label class="control-label col-sm-2" for="terneros">Terneros</label>
        <div class="col-sm-9">
          <input type="number" id="terneros" class="form-control" ng-model="acontecimiento.terneros"  />
        </div>
      </div>
      <div class="pull-right">
        <button type="submit" class="btn btn-default">Aceptar</button>
      </div>
    </form>
</div>



via Fjallbacka

No comments:

Post a Comment