Привет Я в настоящее время новичок в nodejs и mongodb, что я хочу сделать, это сделать функцию, чтобы обновить мою победу, проиграть, извлечь запись из моей учетной записи.
Моя схема:
UserSchema = new mongoose.Schema({
username:'string',
password:'string',
email:'string',
//Change Made
win:{ type: Number, default: 0 },
lose:{ type: Number, default: 0 },
draw:{ type: Number, default: 0 }
});
Моя функция для обновления:
//Update scores
app.post("/user/updateScores", function (req, res) {
var user = new User({
username:req.body.username,
win:req.body.win,
lose:req.body.lose,
draw:req.body.draw
});
Users.findOne({ username : req.params.username }, function(error, user) {
if (error || !user) {
res.send({ error: error });
} else {
user.update(function (err, user) {
if (err) res.json(err)
req.session.loggedIn = true;
res.redirect('/user/' + user.username);
});
}
});
});
Проблема в том, когда я пытаюсь обновить, когда я пытаюсь обновить его через свой html файл. Он ничего не обновляет и просто остается неизменным (значения выигрывают, теряют, рисуют значение по умолчанию 0, поэтому, когда я выхожу из системы и снова вхожу в систему, значения выигрыша, проигрывания, ничьей записи по-прежнему равны нулю). Я тщательно проверил, была ли проблема проблемой html и javascript, которые я сделал, но это не так, поэтому я думаю, что проблема в том, что я обновил эту функцию. У любого из вас есть идея, где я пошла не так? Благодарю!
Предполагая, что ваше post
правильно вызывается клиентом, вам нужно быть осторожным с именами переменных и параметров, так как область действия сейчас заключается в том, что вы сохраняете точный дубликат объекта пользователя, который был просто извлечен с помощью findOne
.
Вы уже пользователь объявлен переменной post
обратного вызова, а затем снова в findOne
. Внутренний user
переменной будет иметь приоритет.
app.post("/user/updateScores", function (req, res) {
var username = req.body.username;
Users.findOne({ username : username }, function(error, user) {
if (error || !user) {
res.send({ error: error });
} else {
// update the user object found using findOne
user.win = req.body.win;
user.lose = req.body.lose;
user.draw = req.body.draw;
// now update it in MongoDB
user.update(function (err, user) {
if (err) res.json(err) {
req.session.loggedIn = true;
}
res.redirect('/user/' + user.username);
});
}
});
});