Node.js + mangouste [RangeError: le Maximum de la pile d'appels de taille dépassait]

Je suis nouvelle Node.js et je suis confronté à une erreur :

RangeError: le Maximum de la pile d'appels de taille dépassait

Je ne suis pas en mesure en mesure de résoudre le problème parce que la plupart de la pile problèmes relatifs à d'autres questions sur stackoverflow Node.js offres spéciales avec des centaines de rappel mais je n'ai que 3 ici.

D'abord un fetch (findById) puis une mise à jour d'une version ultérieure d'une opération d'enregistrement!

Mon code est :

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

L'erreur se produit pendant l'enregistrement de l'opération à la fin!

J'utilise MongoDb avec mangouste afin Table et User sont ma base de données des collections.

C'est à partir de mon premier projet avec Node.js,Express.js et MongoDB, donc j'ai probablement fait d'énormes erreurs dans le code asynchrone 🙁

MODIFIER: j'ai essayé de remplacer l'enregistrer avec une mise à jour:

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

Mais il n'aide pas l'erreur est encore à venir et je ne sais pas comment faire pour déboguer :/

  • Veuillez placer votre réponse dans la section réponse.
  • Non pas qu'il serait la cause d'une pile de problème de taille, mais cette ligne est fausse: if(req.user.money < table.maxPlayers). Rien d'autre sort que de mal sur ce que vous faites.
  • vous obtenez cette erreur après avoir fait plusieurs demandes ou faut-il se produire après la première demande?
InformationsquelleAutor prdox | 2012-05-20