Node.js + mongoose [RangeError: превышен максимальный размер стека вызовов]

Я новичок в Node.js, и я сталкиваюсь с ошибкой:

RangeError: превышен максимальный размер стека вызовов

Я не могу в состоянии решить проблему, потому что большинство проблем со стеком в других вопросах stackoverflow о Node.js связаны с сотнями обратных вызовов, но у меня здесь только 3.

Сначала выборка ( 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, поэтому Tableи User— это мои коллекции баз данных.

Это из моего первого проекта с Node.js, Express.js и MongoDB, поэтому я, вероятно, допустил огромные ошибки в асинхронном коде :(

РЕДАКТИРОВАТЬ: я попытался заменить сохранение обновлением:

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

});

Но это не помогает, ошибка все еще возникает, и я не знаю, как ее отладить:/

18
задан Hongarc 6 November 2018 в 15:03
поделиться