Я новичок в Node, и я столкнулся с ошибкой:
[RangeError: превышен максимальный размер стека вызовов]
Я не могу решить проблему, потому что большинство проблем стека в других вопросах stackoverflow о Node имеет дело с сотнями обратных вызовов, но у меня здесь всего 3.
Сначала выберите fetch (findbyid), затем обновите более позднюю операцию сохранения!
Мой код:
app.post('/poker/tables/:id/join', function(req,res){
var id = req.params.id;
models.Table.findById(id, function (err, table) {
if(err) { console.log(err); res.send( { message: 'error' }); return; }
if(table.players.length >= table.maxPlayers ) {
res.send( { message: "error: Can't join ! the Table is full" });
return;
}
console.log('Table isnt Full');
var BuyIn = table.minBuyIn;
if(req.user.money < table.maxPlayers ) {
res.send( { message: "error: Can't join ! Tou have not enough money" });
return;
}
console.log('User has enought money');
models.User.update({_id:req.user._id},{ $inc:{ money : -BuyIn }}, function(err, numAffected) {
if(err) { console.log(err); res.send( { message: 'error: Cant update your account' }); return; }
console.log('User money updated');
table.players.push( {userId: req.user._id, username: req.user.username, chips:BuyIn, cards:{}} );
table.save(function (err) {
if(err) { console.log(err); res.send( { message: 'error' });return; }
console.log('Table Successfully saved with new player!');
res.send( { message: 'success', table: table});
});
});
})});
Ошибка происходит во время операции сохранения в конце!
Я использую MongoDb с mongoose, поэтому "Таблица" и "Пользователь" являются моими коллекциями баз данных.
Это из моего первого проекта с nodejs, expressjs и mongodb, поэтому я, вероятно, совершил огромные ошибки в асинхронном коде: (
EDIT: я попытался заменить сохранение на обновление:
models.Table.update({_id: table._id}, { '$push': { players : {userId: req.user._id, username: req.user.username, chips:BuyIn, cards:{}} } }, function(err,numAffected) {
if(err) { console.log(err); res.send( { message: 'error' });return; }
console.log('Table Successfully saved with new player!');
res.send( { message: 'success', table: table});
});
Но это не помогает, ошибка все еще идет, и я не знаю, как ее отладить:/