我有点问题要理解这里要做什么。我正在学习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
答案 0 :(得分:1)
首先,它希望网址如下: http://localhost:3000/api/teams/update/259710fc44fcd87eb03d2120f http://localhost:3000/api/update2/259710fc44fcd87eb03d2120f
分别
"PareggiateTrasferta": req.params,
PareggiateTrasferta,
加上这是一个无效的陈述。