Ошибка "Column 'name' cannot be null"

Рейтинг: 0Ответов: 0Опубликовано: 11.03.2023

На странице по нажатии кнопки у меня должен отправляться post-запрос в мой api, который затем обновляет информацию о пользователе в базе данных, однако в api приходят переменные со значениями Null (изначально значения этих переменных я брал из заполненных на странице полей, но даже при использовании конкретных заданных значений ошибка остается).

Вот мой скрипт на странице (снизу обрезал лишнюю часть с обработкой ошибки):

<script>
    document.addEventListener('DOMContentLoaded', () => {
        let btn = document.getElementById('btn_save')
        if (!btn) {
            console.error("Button not found!")
        } else {
            btn.addEventListener('click', function () {
                console.log('clicked!')

                console.log(name, school)
                let userID = <%= userId %>
                const url = `http://localhost:4050/db/card/${userID}`

                fetch(url, {
                    mode: 'no-cors',
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify({
                        "name": 'Nikitosik',
                        "scnmb": 5
                    })
                })
                    .then(response => {

                        console.log('Success:', response);
                    })

А вот обработчик в моем API:

app.post('/db/card/:userId', jsonParser, async (req, res) => {
    try {
        const conn = mysql.createConnection({
            host: 'localhost',
            user: 'root',
            database: 'testdb',
            password: ''
        });

        const { name, scnmb } = req.body;
        const userId = req.params.userId;

        conn.connect(err => {
            if (err) {
                console.log(err);
                res.status(500).send('Error connecting to database');
            } else {
                console.log('DATABASE ----- CONNECTED SUCCESSFULLY');
            }
        });

        conn.beginTransaction(err => {
            if (err) {
                console.log(err);
                res.status(500).send('Error updating user');
            } else {
                const sql1 = 'UPDATE user_info SET name = ?, scnmb = ? WHERE id = ?';

                conn.query(sql1, [name, scnmb, userId], (err) => {
                    if (err) {
                        conn.rollback(() => {
                            console.log(err);
                            res.status(500).send('Error updating user');
                        });
                    } else {
                        conn.commit(err => {
                            if (err) {
                                conn.rollback(() => {
                                    console.log(err);
                                    res.status(500).send('Error updating user');
                                });
                            } else {
                                console.log('User updated successfully');
                                res.send('User updated successfully');
                            }
                        });
                    }
                });
            }
        });
    } catch (e) {
        console.log(e);
        res.status(500).send('Database error');
    }
});

Проверял через POSTMAN, все отлично работает.

Ответы

Ответов пока нет.