Ошибка "Column 'name' cannot be null"
На странице по нажатии кнопки у меня должен отправляться 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, все отлично работает.
Источник: Stack Overflow на русском