2015-02-18 2 views
0

Моя установка - NodeJS, MongoDB и Angular. В настоящее время я пытаюсь добавить функцию POSTing в свой тестовый код, но не могу обернуть вокруг себя. В настоящее время я могу вытащить данные из БД, и я бросил вместе быстрый и грязный вид/фабрику, основанный на ряде примеров, которые я видел, чтобы попытаться запустить функцию POST.Публикация с угловым по отношению к Mongo

Проблема, с которой я столкнулся, фактически получает значения, добавляемые в БД. Когда я отправляю форму, в БД создается новый ObjectID с полем «_v» и значением 0. Поэтому я знаю, что POST по крайней мере отправляется в БД, но значения, которые я хочу, не являются. Я уверен, что я делаю что-то глупое, и любая помощь очень ценится.

Вот моя установка контроллера/завод: (я назвал POST завод «тако», так что будет стоять вне Кроме того, потому что они вкусные..)

 angular.module('app', ['ngRoute']) 
    .factory('Users', ['$http', function($http) { 
     return $http.get('/users'); 
    }]) 
    .factory('taco', ['$http', function($http) { 
     return $http.post('/users'); 
    }]) 
    .controller('UserController', ['$scope', 'Users', function($scope, Users) { 
     Users.success(function(data) { 
      $scope.users = data; 
     }).error(function(data, error) { 
      console.log(error); 
      $scope.users = []; 
     }); 
    }]) 
    .controller('ExampleController', ['$scope', 'taco', function($scope, taco) { 
    $scope.submit = function() { 
     if ($scope.users.name) { 
     $scope.name.post(this.name); 
     $scope.name = ''; 
    } 
    }; 
}]); 

Вот моя форма:

<div> 
    <form ng-submit="submit()" ng-controller="ExampleController"> 
     Enter the things:<br/> 
     <input type="text" ng-model="name" name="user.name" placeholder="name" /><br/> 
     <input type="text" ng-model="emp_id" name="user.emp_id" placeholder="EID" /><br/> 
     <input type="text" ng-model="loc" name="user.loc" placeholder="location" /><br/> 
     <input type="submit" id="submit" value="Submit" /> 
    </form> 
</div> 
+0

Вы определили услугу тако, вводят его в вашем контроллере, но не использовал его. Кроме того, ваша служба возвращает обещание - ваша служба ничего не делает. Вы проходили обучение в AngularJS? – callmekatootie

ответ

1

Чтобы разместить с помощью $http услугу вы можете сделать:

angular.module('myApp') 

.controller('MyController', function($scope, $http) { 
    $http.post('/destination', {my: 'data'}); 
}); 

Вы не отправляете какие-либо данные в свой запрос POST. Служба taco просто выполняет вызов $http.post и возвращает обещание.

Пожалуйста, посмотрите на $http служебных документов: https://docs.angularjs.org/api/ng/service/$http

0

Я хотел бы определить функцию представить, что будет передавать данные, когда пользователь нажимает на отправить:

$scope.submit = function() { 
    $http.post('/destination', {my: 'data'}); 
} 
Смежные вопросы