2017-01-13 1 views
0

MEAN стек новичок здесь. Я создал простое приложение, которое использует имена и возрасты как практику. Прямо сейчас я в тупике в той части, где мне нужно вставлять значения массива в массив mongoose.Как правильно нажать значения массива в схеме мангуста в MEAN

Вот моя схема:

var schema = new mongoose.Schema({ 
    name: String, 
    peoplelist : [{ 
     name: String, 
     age: String 
    }] 
}); 

Вот мой контроллер на стороне клиента:

app.controller("IndexController", function ($scope, $resource) { 
    var PeopleAPI = $resource('/api/post/'); 

    // This is used by ng-repeat 
    $scope.inputfields = [{ 
     infoname: '', 
     infoage: '' 
    }]; 

    // This will be used when transferring details to mongoose schema 
    $scope.arrayppl= { 
     name: '', 
     details: [$scope.inputfields] 
    }; 

    // Adds new fields in the UI - adding friends is unlimited. 
    $scope.addDetails = function() { 
     $scope.inputfields.push({}); 
    } 


    $scope.saveToDB = function() { 
     var people = new PeopleAPI(); 

     // save name to main array (arrayppl) 
     $scope.arrayppl["name"] = $scope.username; 

     // save infoname and infoage to arraymen 
     var len = $scope.inputfields.length; 

     for (var i = 0; i <= len - 1; i++) { 
      var tempArr = {}; 
      tempArr["infoname"] = $scope.inputfields[i].infoname; 
      tempArr["infoage"] = $scope.inputfields[i].infoage; 

      $scope.arraymen["details"].push(tempArr); 
     } 

     people.name = $scope.arrayppl["name"]; 

     var i = 0; 
     angular.forEach($scope.arraymen["details"], function (item) { 

      var peopleObj = {name: item[i].infoname, age: item[i].infoage}; 

      people.peoplelist.push(peopleObj); // <-- error gets triggered here 

      i+=1; 
     }); 

     people.$save(function(result){ 
      console.log(result); 
     }); 
    } 
}); 

Вот Plunkr, что мое приложение выглядит, и SO question я использую в качестве ссылки, потому что это ближе всего к тому, что я пытаюсь сделать.

На линии people.peoplelist.push(peopleObj), я получаю ошибку "Cannot read property 'push' of undefined.. Означает ли это, что я неправильно получаю схему массива из мангуста? Как это исправить?

Любые ответы будут очень оценены.

Благодарим вас, как всегда за руководство.

ответ

0

Наконец решили эту проблему с помощью this post. я имел внести некоторые изменения в моей схеме и на стороне клиента контроллера для того, чтобы заставить его работать.

Вот что я сделал:

Моя новая схема:

var schema = new mongoose.Schema({ 
    name: String, 
    peoplelist : [] 
}); 

Мой новый контроллер:

app.controller("IndexController", function ($scope, $resource) { 
    var PeopleAPI = $resource('/api/post/'); 

    $scope.inputfields = [{ 
     infoname: '', 
     infoage: '' 
     }]; 

    $scope.arraymen = { 
     name: '', 
     details: [] 
    }; 

    $scope.addDetails = function() { 
     $scope.inputfields.push({}); 
    } 

    $scope.saveToDB = function() { 
     var people = new PeopleAPI(); 

     // save name to main array (arraymen) 
     $scope.arraymen["name"] = $scope.username; 

     // save infoname and infoage to arraymen 
     //var len = Object.keys($scope.inputfields.infoname).length; 
     var len = $scope.inputfields.length; 

     for (var i = 0; i <= len - 1; i++) { 
      var tempArr = {}; 
      tempArr["infoname"] = $scope.inputfields[i].infoname; 
      tempArr["infoage"] = $scope.inputfields[i].infoage; 

      //$scope.arraymen["details"].push(tempArr); 
      $scope.arraymen["details"].push({ 
       "name": tempArr["infoname"], 
       "age": tempArr["infoage"] 
      }); 
     } 


     people.name = $scope.arraymen["name"]; 
     //people.peoplelist = new Array(); 
     people.peoplelist = []; 


     for (var i = 0; i <= $scope.arraymen["details"].length - 1; i++) { 
      people.peoplelist.push({ 
       name: $scope.arraymen["details"][i].name, 
       age: $scope.arraymen["details"][i].age 
      }) 

     } 

     people.$save(function (result) { 
      console.log(result); 
     }); 

    } 
}); 
Смежные вопросы