J'ai un petit problème pour comprendre ce que je dois faire ici. J'apprends nodejs et mongodb/mongoose. Seulement pour apprendre, je construis une petite page pour mettre à jour les documents dans mon DB. Tout d'abord, je choisis deux équipes à partir d'un select, puis j'insère des données d'entrée et ensuite je veux les enregistrer dans le db. Sur le front-end, mon contrôleur est comme ceci:CastError: La conversion au numéro a échoué pour la valeur "undefined" au chemin
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')
})
}
}
}
});
Ma collection est appelée "équipes", et voici mon back-end:
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var mongoose = require('mongoose');
var ObjectId = mongoose.Schema.Types.ObjectId;
mongoose.connect('mongodb://localhost:27017/FootballNumbers', function(err){
if(err)
console.log(err);
else
console.log("db connected")
});
var db = mongoose.connection;
var teamsSchema = mongoose.Schema({
"_id": {type: ObjectId},
"Nome" : {type: String},
"Paese" : {type: String},
"Bandiera" : {type: String},
"Stemma" : {type: String},
"Campionato" : {type: String},
"Classifica" : {type: Number},
"ClassificaCasa" : {type: Number},
"ClassificaTrasferta" : {type: Number},
"PartiteGiocate" : {type: Number},
"Vinte" : {type: Number},
"Pareggiate" : {type: Number},
"Perse" : {type: Number},
"GiocateCasa" : {type: Number},
"VinteCasa" : {type: Number},
"PareggiateCasa" : {type: Number},
"PerseCasa" : {type: Number},
"GiocateTrasferta" : {type: Number},
"VinteTrasferta" : {type: Number},
"PareggiateTrasferta" : {type: Number},
"PerseTrasferta" : {type: Number},
"Forma" : {type: Number},
"MediaGol" : {type: Number},
"Over1" : {type: Number},
"Over2" : {type: Number},
"Over1Casa" : {type: Number},
"Over2Casa" : {type: Number},
"Over1Trasferta" : {type: Number},
"Over2Trasferta" : {type: Number},
"GolSegnati" : {type: Number},
"GolSegnatiCasa" : {type: Number},
"GolSegnatiTrasferta" : {type: Number},
"GolSubiti" : {type: Number},
"GolSubitiCasa" : {type: Number},
"GolSubitiTrasferta" : {type: Number},
},
{ collection : 'Teams' });
var Team = mongoose.model('Team', teamsSchema);
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(express.static(__dirname + '/client'));
app.get('/api/teams', function(req, res){
Team.find(function (err, data) {
if (err) return console.error(err);
res.json(data);
})
});
/* UPDATE team*/
app.put('/api/teams/update/:_id', function(req, res) {
Team.update({"_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
}},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) {
Team.update({"_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
}},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');
});
Et dans le terminal i a cette erreur: CastError : Moulage au numéro a échoué pour la valeur « non défini » au chemin « GolSubitiCasa »
CastError: Monter au numéro a échoué pour la valeur « non défini » au chemin « GolSubitiTrasferta »
Je suis désolé pour le ital champs ian mais c'est une ancienne base de données que j'avais sur mon ordinateur et je l'utilise seulement pour apprendre
'req.params.GolSubitiCasa' et' req.params.GolSubitiTrasferta' sont indéfinis. Essayez de déboguer avec la console dans le contrôleur avant d'essayer d'enregistrer dans DB. – TGrif
tous les req.params. arrive comme non défini au backend, mais dans le frontend le nombre est juste. – mpeg90