在几次成功的POST请求访存后引发TypeError:网络请求失败

问题描述 投票:0回答:1

我有一个奇怪的问题。我的问题是,在连续执行两次获取POST请求后,它会引发错误:TypeError网络请求失败。但是在我执行提取的那两次中,它们按预期方式工作。无论执行多少次,GET请求都不会出现此错误。例如,当我注册7次时,就会抛出此错误。或者当我登录,注销,登录等两次时,会抛出此错误。我的带有提取的POST请求的示例是注册:

handleRegistration = async (name, email, password) => {
        try {
            const response = await fetch(fetchUrl + ':3000/newCustomer', {
                method: 'POST',
                headers: {
                    Accept: 'application/json',
                    'Content-Type': 'application/json',
                },
                body: JSON.stringify({
                    "name": name,
                    "email": email,
                    "password": password
                })
            });
            const data = await response.json();
            return await data.success ? FadeToast(data.message) && this.props.navigation.navigate('Login') : FadeToast(data.message);
        } catch (err) {
            console.log(err, 'Register err');
            FadeToast('Server fout');
        }
    };

// NodeJS code
app.post('/newCustomer', function(req, res)
{
    if (!req.body.email || !req.body.password) {
        return res.json({success: false, message: 'Voer alstublieft uw e-mail en wachtwoord in'});
    } else {
        const name = req.body.name;
        const email = req.body.email;
        const password = req.body.password;
        const salt = bcrypt.genSaltSync(10);
        const hash = bcrypt.hashSync(password, salt);

        if(name.length > 50) {
            return res.json({success: false, message: 'Limiet naam is 50 char.'});
        } else {
            if(email.length > 191 || password.length > 191) {
                return res.json({success: false, message: 'Max. characters is 191.'});
            } else {
                if (validateEmail(email)) {
                    createUser([name, email, hash], (err) => {
                        console.log(err);
                        if (err) return res.json({success: false, message: 'E-mail al in gebruik'});
                        return res.json({success: true, message: 'Succesvol geregistreerd'});
                    });
                } else {
                    return res.json({success: false, message: email + ' is geen geldige e-mail'});
                }
            }
        }
    }
});

我使用NodeJS来处理请求。我不知道如何调试它,我还没有看到其他人遇到此问题,因此,我们感谢您的帮助。我也尝试过adb logcat *:E,但这似乎没有显示任何与数据库/ react-native相关的内容。也许我不是在此日志中寻找正确的东西,但是我看不到任何有用的东西。 UDPATE:似乎更好的方法是在查询的cb中添加connection.release(),但这仅不能防止错误发生,而只是延迟了它。因为当我添加它时,即使执行了更多提取请求,也会收到错误消息。也许这与它有关?

node.js react-native fetch
1个回答
0
投票

显然引起此错误的原因是,我在查询的cb中没有connection.release()。我认为必须使其正常工作,这也是我在文档https://github.com/mysqljs/mysql中发现的代码流。 “这是pool.getConnection()-> connection.query()-> connection.release()代码流的快捷方式。”

const  findUserByEmail  = (email, cb) => {
    db.getConnection(function(err, connection) {
        db.query('SELECT * FROM users WHERE email = ?',[email], (err, row) => {
            connection.release();
            return cb(err, row);
        });
    });
};
© www.soinside.com 2019 - 2024. All rights reserved.