Как поправить этот код чтобы можно было обновить данные в бд( при взаимодействии с методом класса в Node.js)?
По post запросу получаю данные и обрабатываю их методом update
|
1 |
app.post('/users/:id/edit', (req, res, next) => { const id = req.params.id if (!req.body) return res.sendStatus(400) us_crud.update( id, {firstName: req.body.firstName, lastName: req.body.lastName, email: req.body.email, image: req.body.image}, (err) => { if(err) return next(err) return res.redirect('/users') } ) }) |
метод update в файле с классом
|
1 |
static update(id, cb, data) { if(!id) return cb(new Error('Please provide an id')) const sql_upd = `UPDATE users SET firstName = ?, lastName = ?, email = ?, image = ? WHERE id = ?` db.run(sql_upd, data.firstName, data.lastName, data.email, data.image, id, cb) } } |
Ошибка:
|
1 |
[Error: SQLITE_RANGE: column index out of range Emitted 'error' event on Statement instance at: ] { errno: 25, code: 'SQLITE_RANGE' } |
Другие методы класса, такие как удаление, выборка, вставка отлично работают. Ошибка лишь при обновлении.
Дополнительно:
Проверьте тот запрос, который отправляется в БД. В библиотеке по работе с БД наверняка должен быть режим отладки.
Подозреваю, у вас порядок аргументов не тот:
Тут data идет третьим аргументом: static update(id, cb, data)
А тут объект передается вторым:
|
1 |
us_crud.update( id, {firstName: req.body.firstName, lastName: req.body.lastName, email: req.body.email, image: req.body.image}, (err) => {...} ) |
Я рекомендую не забивать на типизацию, дабы не сталкиваться с такими ошибками. =)
Например:
|
1 |
static update(id: string, cb: (err?: Error) => void, data: Record<string, string | number | bool>) |
Еще могу посоветовать перейти на промисы. Подход с коллбэками уже изрядно устарел.
- А еще return res.redirect в коллбэке, кажется, не очень к месту
- Спасибо, помогло!
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?
Для того чтобы обновить данные в базе данных при взаимодействии с методом класса в Node.js, необходимо убедиться, что ваш код корректно выполняет операцию обновления записи. Вот пример того, как можно поправить код для этой цели:
phpclass Database {
constructor() {
this.connection = // инициализация подключения к базе данных
}
async updateData(id, newData) {
try {
const query = UPDATE table_name SET column1 = ?, column2 = ? WHERE id = ?
;const values = [newData.value1, newData.value2, id];
await this.connection.query(query, values);
console.log('Данные успешно обновлены в базе данных');
} catch (error) {
console.error('Ошибка при обновлении данных в базе данных:', error);
}
}
}
// Пример использования метода updateData
const db = new Database();
const id = 1;
const newData = { value1: 'новое значение 1', value2: 'новое значение 2' };
db.updateData(id, newData);
В данном примере метод
updateDataпринимает два аргумента:id- идентификатор записи, которую необходимо обновить, иnewData- объект с новыми данными для обновления. Внутри метода формируется SQL запрос на обновление данных в таблицеtable_nameпо указанномуid. После этого выполняется запрос к базе данных с использованиемthis.connection.query, гдеquery- сам запрос, аvalues- массив значений для подстановки в запрос.Помимо этого, в коде также добавлены обработчики ошибок для лучшей отладки и контроля над процессом обновления данных. Не забудьте заменить
table_name,column1,column2на актуальные названия таблицы и колонок в вашей базе данных.Таким образом, после внесения указанных изменений в ваш код, вы сможете успешно обновлять данные в базе данных при взаимодействии с методом класса в Node.js.
Для того чтобы обновить данные в базе данных при взаимодействии с методом класса в Node.js, необходимо следовать определенным шагам. Вот пример кода, который демонстрирует как это можно сделать:
В данном примере мы создаем класс Database, который содержит метод updateData для обновления данных в базе данных. Метод принимает два параметра - id записи, которую необходимо обновить, и новое значение данных. Затем мы создаем экземпляр класса Database и вызываем метод updateData с нужными параметрами.
Убедитесь, что в коде заменены значения host, user, password, database, table_name, column_name на актуальные значения для вашей базы данных. Также не забудьте установить и подключить модуль mysql перед использованием.
Этот код поможет вам обновить данные в базе данных при взаимодействии с методом класса в Node.js.