PUT方法出错。 angularjs,nodejs

时间:2017-10-04 09:07:57

标签: javascript angularjs node.js mongodb

我有点问题要理解这里要做什么。我正在学习nodejs和mongodb / mongoose。只是为了学习,我正在构建一个小页面来更新我的数据库中的文档。首先,我从一个选择中选择两个团队,然后从输入中插入数据,然后我想将它们保存在数据库中。在前端,我的控制器是这样的:

 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')
    })

            }
        }
       }


       });

我想更新两个具有相同功能的文档,但我不明白我的后端mongoose方法PUT必须如何。我读到了它,但在这样的情况下,我发现似乎没有任何东西可以帮助我。谢谢你的帮助。

我的收集名为&#34; Teams&#34;,我没有创建任何架构,因为我的数据库已经填满,这是我的后端:

       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方法

在终端中我收到了这个错误:无法读取属性&#39; findOneAndUpdate&#39; of undefined

1 个答案:

答案 0 :(得分:1)

首先,它希望网址如下: http://localhost:3000/api/teams/update/259710fc44fcd87eb03d2120f http://localhost:3000/api/update2/259710fc44fcd87eb03d2120f

分别

"PareggiateTrasferta": req.params,
PareggiateTrasferta,

加上这是一个无效的陈述。