2015-11-20 3 views
0

У меня есть приложение MEAN, однако одна из моих моделей не работает. По какой-то причине я не могу отправить в мою базу данных. Пожалуйста, просмотрите мой код ниже:angularjs не размещать в базе данных

схемы

var GroupSchema = Schema({ 
    name : String, 
    posts : [{type: Schema.Types.ObjectId, ref: "Post"}], 
    user : {type:String, ref:"User" }, 
    created : {type:Date, default: Date.now} 
}); 

module.exports = mongoose.model('Group', GroupSchema); 

сервера (частичной)

router.route('/groups') 
    .post(function(req, res) { 
     var group = new Group(); 
     group.name = req.body.name; 
     group.user = req.body.user; 
     group.save(function(err) { 
      if (err) 
       res.send(err); 

      res.json({ message: 'group created!' }); 
     }); 
    }) 
    .get(function(req, res) { 
     var current_user = req.user; 
     console.log("req: " + req) 

     Group.find({ user: current_user._id }).exec(function(err, groups) { 
      if (err) throw err; 

      // show the admins in the past month 
      console.log(groups); 
      res.json(groups); 
      console.log("current user:" + current_user); 
     }); 
    }); 

контроллера (частичного)

myApp.controller('sideNav', function ($http, $scope, $timeout, $mdSidenav, $log) { 
    var refreshGroup = function(){ 
     $http.get('/api/groups').success(function(response) { 
      console.log('I got the group data! :D'); 
      $scope.groups = response; 
      $scope.group = ""; 
     }); 
    } 
    refreshGroup(); 

    $scope.addGroup = function() { 
     //$scope.post.url = parenturl; 
     console.log($scope.group._id); 

     $http.post('/api/groups', $scope.group).success(function(response){ 
      refreshGroup(); 
     }); 

    }; 
    }); 

View (частичный)

<div id="creategroup" ng-show="showAddGroup"> 
<input id="new-group-user" style="display:none !important;" class="hidden form-control" ng-model="group.user" ng-init="group.user='<%= user._id %>'" placeholder="{{group.user}}" value="{{group.user}}"> 
<md-input-container> 
    <label for="input_1">New Group</label> 
    <input id="newGroup input_1" style="display:inline !important;" class="ng-pristine form-control" ng-model="group.name" /> 
</md-input-container> 
<md-button style="display:inline !important;" id="theGroupButton" class=" hidden btn btn-primary" ng-click="addGroup()">Add Group</md-button> 

Когда я нажимаю добавить группы Я не получаю возможные неточности, однако, мои два нг-модели пользователя и имени не собираюсь через. Когда я console.log с контроллера, используя $ scope.group._id,$ scope.group.user и $ scope.group.name оба они возвращаются не определены.

Может ли кто-нибудь увидеть, что я делаю неправильно?

Заранее спасибо.

ответ

0

Мои наблюдения из вашего кода следующий -

  1. Первоначально, когда вы звоните refreshGroup(), это делает ваш $ scope.group установлен в пустую строку, и это делает HTML часть, которая group.user и group.name как undefined.

  2. После нажатия кнопки «Добавить группу» вы получаете одно и то же неопределенное значение, и одно и то же неопределенное значение теперь передается API, и цикл повторяется.

Как я понимаю, не устанавливайте $ scope.group в пустую строку, вместо этого просто замените ее данными сервера, такими как $ scope.group = response.

Кроме того, это хорошая практика для инициализации переменных $ scope с их значениями по умолчанию перед их использованием.

Смежные вопросы