2017-10-04 55 views
0

我有一個小問題來理解這裏要做什麼。我正在學習nodejs和mongodb/mongoose。只是爲了學習,我正在構建一個小頁面來更新我的數據庫中的文檔。首先,我從一個select中選擇兩個團隊,然後從輸入中插入數據,然後我想將它們保存在db中。在前端,我的控制器是這樣的:PUT方法中的錯誤。 angularjs,nodejs

FootballNumbers.controller('teamController', function($scope, $route, $routeParams, $http){ 

$http.get('/api/teams').then(function(response){ 
     $scope.teams = response.data; 
     console.log(response.data); 
    }); 

$scope.aggiornaDB = function(squadra1,squadra2){ 
     console.log(squadra1); 
     console.log(squadra2); 
     for(i=0; i<$scope.teams.length; i++){ 
      for (j=0; j<$scope.teams.length;j++){ 
       if($scope.teams[i].Nome==squadra1){ 
        if($scope.teams[j].Nome==squadra2){ 
         console.log($scope.teams[i].Nome); 
         console.log($scope.teams[j].Nome); 

         var Classifica = $scope.Classifica; 
         var ClassificaCasa = $scope.ClassificaCasa; 
         var ClassificaTrasferta = $scope.ClassificaTrasferta; 

         var Classifica2 = $scope.Classifica2; 
         var ClassificaCasa2 = $scope.ClassificaCasa2; 
         var ClassificaTrasferta2 = $scope.ClassificaTrasferta2 

         var Forma = $scope.Forma; 
         var Forma2 = $scope.Forma2; 

         var PartiteGiocate = $scope.teams[i].PartiteGiocate + 1; 
         var PartiteGiocateCasa = $scope.teams[i].GiocateCasa + 1; 

         var PartiteGiocate2 = $scope.teams[j].PartiteGiocate + 1; 
         var PartiteGiocateTrasferta = $scope.teams[j].GiocateTrasferta + 1; 

         var Vinte = $scope.teams[i].Vinte; 

         var VinteCasa = $scope.teams[i].VinteCasa; 

         var Perse2 = $scope.teams[j].Perse ; 
         var PerseTrasferta= $scope.teams[j].PerseTrasferta ; 

         var Pareggiate = $scope.teams[i].Pareggiate ; 
         var PareggiateCasa = $scope.teams[i].PareggiateCasa ; 
         var Pareggiate2 = $scope.teams[j].Pareggiate ; 
         var PareggiateTrasferta = $scope.teams[j].PareggiateTrasferta ; 

         var Perse = $scope.teams[i].Perse ; 
          var PerseCasa = $scope.teams[i].PerseCasa ; 
          var Vinte2 = $scope.teams[j].Vinte ; 
          var VinteTrasferta = $scope.teams[j].VinteTrasferta ; 

         if($scope.GolCasa > $scope.GolTrasferta){ 
          Vinte = $scope.teams[i].Vinte + 1; 
          VinteCasa = $scope.teams[i].VinteCasa + 1; 
          Perse2 = $scope.teams[j].Perse + 1; 
          PerseTrasferta= $scope.teams[j].PerseTrasferta + 1; 
         } 
         else if($scope.GolCasa == $scope.GolTrasferta){ 
          Pareggiate = $scope.teams[i].Pareggiate + 1; 
          PareggiateCasa = $scope.teams[i].PareggiateCasa + 1; 
          Pareggiate2 = $scope.teams[j].Pareggiate + 1; 
          PareggiateTrasferta = $scope.teams[j].PareggiateTrasferta + 1; 
         } 
         else { 
          Perse = $scope.teams[i].Perse + 1 ; 
          PerseCasa = $scope.teams[i].PerseCasa + 1 ; 
          Vinte2 = $scope.teams[j].Vinte + 1; 
          VinteTrasferta = $scope.teams[j].VinteTrasferta + 1; 
         } 

         var SommaGol = $scope.GolCasa + $scope.GolTrasferta; 

         var MediaGol = (($scope.teams[i].MediaGol * $scope.teams[i].PartiteGiocate) + SommaGol)/ PartiteGiocate; 
         var MediaGol2 = (($scope.teams[j].MediaGol * $scope.teams[j].PartiteGiocate) + SommaGol)/ PartiteGiocate2; 

         var Over1 = $scope.teams[i].Over1 ; 
          var Over1Casa = $scope.teams[i].Over1Casa ; 
          var Over1T= $scope.teams[j].Over1 ; 
          var Over1Trasferta = $scope.teams[j].Over1Trasferta ; 

         if(SommaGol>1){ 
          Over1 = $scope.teams[i].Over1 + 1; 
          Over1Casa = $scope.teams[i].Over1Casa + 1; 
          Over1T= $scope.teams[j].Over1 + 1; 
          Over1Trasferta = $scope.teams[j].Over1Trasferta + 1; 
         } 

         var Over2 = $scope.teams[i].Over2; 
          var Over2Casa = $scope.teams[i].Over2Casa; 
          var Over2T= $scope.teams[j].Over2; 
          var Over2Trasferta = $scope.teams[j].Over2Trasferta; 

         if(SommaGol>2){ 
          Over2 = $scope.teams[i].Over2 + 1; 
          Over2Casa = $scope.teams[i].Over2Casa + 1; 
          Over2T= $scope.teams[j].Over2 + 1; 
          Over2Trasferta = $scope.teams[j].Over2Trasferta + 1; 
         } 

          var GolSegnati = $scope.teams[i].GolSegnati ; 
          var GolSegnatiCasa = $scope.teams[i].GolSegnatiCasa ; 
          var GolSubitiTrasferta = $scope.teams[j].GolSubitiTrasferta ; 
          var GolSubiti2 = $scope.teams[j].GolSubiti ; 

         if ($scope.GolCasa>0){ 
          GolSegnati = $scope.teams[i].GolSegnati + 1; 
          GolSegnatiCasa = $scope.teams[i].GolSegnatiCasa + 1; 
          GolSubitiTrasferta = $scope.teams[j].GolSubitiTrasferta + 1; 
          GolSubiti2 = $scope.teams[j].GolSubiti + 1; 
         } 

          var GolSubiti = $scope.teams[i].GolSubiti ; 
          var GolSubitiCasa = $scope.teams[i].GolSubitiCasa ; 
          var GolSegnatiTrasferta = $scope.teams[j].GolSegnatiTrasferta; 
          var GolSegnati2 = $scope.teams[j].GolSegnati ; 

         if ($scope.GolTrasferta>0){ 
          GolSubiti = $scope.teams[i].GolSubiti + 1; 
          GolSubitiCasa = $scope.teams[i].GolSubitiCasa + 1; 
          GolSegnatiTrasferta = $scope.teams[j].GolSegnatiTrasferta + 1; 
          GolSegnati2 = $scope.teams[j].GolSegnati + 1; 
         } 

        } 
       } 
$http.put('/api/teams/update/' + $scope.teams[i]._id, { 
    params: { 
     'Classifica': Classifica, 
     'ClassificaCasa': ClassificaCasa, 
     'ClassificaTrasferta': ClassificaTrasferta, 
     "Forma": Forma, 
     "PartiteGiocate": PartiteGiocate, 
     "PartiteGiocateCasa": PartiteGiocateCasa, 
     "VinteCasa": VinteCasa, 
     "Vinte": Vinte, 
     "Pareggiate": Pareggiate, 
     "PareggiateCasa": Pareggiate, 
     "Perse": Perse, 
     "PerseCasa": PerseCasa, 
     "MediaGol": MediaGol, 
     "Over1": Over1, 
     "Over1Casa": Over1Casa, 
     "Over2": Over2, 
     "Over2Casa": Over2Casa, 
     "GolSegnati": GolSegnati, 
     "GolSegnatiCasa": GolSegnatiCasa, 
     "GolSubiti": GolSubiti, 
     "GolSubitiCasa": GolSubitiCasa 
     } 
    }); 

    $http.put('/api/teams/update2/' + $scope.teams[j]._id, { 
     params: { 
      'Classifica2': Classifica2, 
      'ClassificaCasa2': ClassificaCasa2, 
      'ClassificaTrasferta2': ClassificaTrasferta2, 
      "Forma2": Forma2, 
      "PartiteGiocate2": PartiteGiocate2, 
      "PartiteGiocateTrasferta": PartiteGiocateTrasferta, 
      "VinteTrasferta": VinteTrasferta, 
      "Vinte2": Vinte2, 
      "Pareggiate2": Pareggiate2, 
      "PareggiateTrasferta": PareggiateTrasferta, 
      "Perse2": Perse2, 
      "PerseTrasferta": PerseTrasferta, 
      "MediaGol2": MediaGol2, 
      "Over1T": Over1T, 
      "Over1Trasferta": Over1Trasferta, 
      "Over2T": Over2T, 
      "Over2Trasferta": Over2Trasferta, 
      "GolSegnati2": GolSegnati2, 
      "GolSegnatiTrasferta": GolSegnatiTrasferta, 
      "GolSubiti2": GolSubiti2, 
      "GolSubitiTrasferta": GolSubitiTrasferta 
     } 
    }) 
    .then(function() { 
     alert('Teams updated') 
    }) 

      } 
     } 
     } 


     }); 

我想更新具有相同功能的兩個文件,但我不明白我的後端貓鼬方法PUT必須如何。我讀過它,但我沒有發現任何東西似乎可以幫助我處理這種情況。感謝您的幫助。

我的集合稱爲「團隊」,我沒有創建任何模式,因爲我的數據庫已經充滿了,這是我的後端:

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

    mongoose.connect('mongodb://localhost:27017/FootballNumbers', function(err){ 
    if(err) 
    console.log(err); 
    else 
    console.log("db connected") 
    }); 

    var connection = mongoose.connection; 




    app.use(bodyParser.urlencoded({extended: true})); 
    app.use(bodyParser.json()); 
    app.use(express.static(__dirname + '/client')); 

    app.get('/api/teams', function(req, res){ 
    connection.db.collection("Teams", function(err, collection){ 
     collection.find({}).toArray(function(err, data){ 
     res.json(data); 
     }) 

    }); 

}); 


    /* UPDATE team*/ 
       app.put('/api/teams/update/:_id', function(req, res, next) 
     { 
    connection.db.collection("Teams", function(err, collection){ 
    collection.findOneAndUpdate({ "_id": req.params._id }, { "$set": { 
    "Classifica" : req.params.Classifica, 
    "ClassificaCasa":req.params.ClassificaCasa, 
    "ClassificaTrasferta":req.params.ClassificaTrasferta, 
    "PartiteGiocate": req.params.PartiteGiocate, 
    "GiocateCasa": req.params.PartiteGiocateCasa, 
    "Vinte": req.params.Vinte, 
    "Pareggiate": req.params.Pareggiate, 
    "Perse": req.params.Perse, 
    "VinteCasa": req.params.VinteCasa, 
    "PareggiateCasa": req.params.PareggiateCasa, 
    "PerseCasa": req.params.PerseCasa, 
    "Forma": req.params.Forma, 
    "MediaGol": req.params.MediaGol, 
    "Over1": req.params.Over1, 
    "Over2": req.params.Over2, 
    "Over1Casa": req.params.Over1Casa, 
    "Over2Casa": req.params.Over2Casa, 
    "GolSegnati": req.params.GolSegnati, 
    "GolSegnatiCasa": req.params.GolSegnatiCasa, 
    "GolSubiti": req.params.GolSubiti, 
    "GolSubitiCasa": req.params.GolSubitiCasa}}).exec(function(err, teams){ 
    if(err) { 
    console.log(err); 
    res.status(500).send(err); 
} else { 
    res.status(200).send(teams); 
    } 
    }); 
    }); 
    }); 




    app.put('/api/teams/update2/:_id', function(req, res, next) { 
connection.db.collection("Teams", function(err, collection){ 
    collection.findOneAndUpdate({ "_id": req.params._id2 }, { "$set": { "Classifica" : req.params.Classifica2, 
     "ClassificaCasa":req.params.ClassificaCasa2, 
     "ClassificaTrasferta":req.params.ClassificaTrasferta2, 
     "PartiteGiocate": req.params.PartiteGiocate2, 
     "GiocateTrasferta": req.params.PartiteGiocateTrasferta, 
     "Vinte": req.params.Vinte2, 
     "Pareggiate": req.params.Pareggiate2, 
     "Perse": req.params.Perse2, 
     "VinteTrasferta": req.params.VinteTrasferta, 
     "PareggiateTrasferta": req.params.PareggiateTrasferta, 
     "PerseTrasferta": req.params.PerseTrasferta, 
     "Forma": req.params.Forma2, 
     "MediaGol": req.params.MediaGol2, 
     "Over1": req.params.Over1T, 
     "Over2": req.params.Over2T, 
     "Over1Trasferta": req.params.Over1Trasferta, 
     "Over2Trasferta": req.params.Over2Trasferta, 
     "GolSegnati": req.params.GolSegnati2, 
     "GolSegnatiTrasferta": req.params.GolSegnatiTrasferta, 
     "GolSubiti": req.params.GolSubiti2, 
     "GolSubitiTrasferta": req.params.GolSubitiTrasferta}}).exec(function(err, teams){ 
    if(err) { 
    console.log(err); 
    res.status(500).send(err); 
    } else { 
     res.status(200).send(teams); 
    } 
}); 
}); 
}); 


    app.listen(3000, function(){ 
    console.log('server is running'); 
    }); 

控制檯顯示我這些錯誤:

angular.js:12587 PUT http://localhost:3000/api/teams/update/597111124fcd87eb03d2122d 500(內部服務器錯誤) 同時爲put方法

並在終端我得到這個錯誤:無法讀取屬性「findOneAndUpdate'of未定義

+0

你的網址有誤它應該是http:// localhost:3000/api/update2/59710fc44fcd87eb03d2120f映射到api/update2 /:id其中'59710fc44fcd87eb03d2120f'是id –

回答

1

首先,它預計的URL進行以下操作: http://localhost:3000/api/teams/update/259710fc44fcd87eb03d2120f http://localhost:3000/api/update2/259710fc44fcd87eb03d2120f

分別。

"PareggiateTrasferta": req.params, 
PareggiateTrasferta, 

加上這是一個無效的語句。

+0

是的,現在網址是正確的,但是錯誤是同樣的(我編輯了新的錯誤),我修正了這個聲明,但沒有任何變化 – mpeg90

+0

可以分享完整的代碼,參考「應用程序」變量。 – imixtron

+0

ok用後臺完整代碼編輯,前臺所有控制器 – mpeg90