#express #mariadb
#экспресс #mariadb
Вопрос:
Я пытаюсь ВСТАВИТЬ значения, заданные в массиве, в мою таблицу, где каждый элемент массива является столбцом в таблице. Имейте в виду, что это для API, поэтому данные принимаются через запросы. Вот соответствующие части в моем коде: user.model.js:
User.create = function (newUser, result) {
console.log(Object.values(newUser));
dbConn.query("INSERT INTO user(user_fname, user_name, user_email, user_phone, user_is_admin) set ?", Object.values(newUser), function (err, res) {
if (err) {
console.log("error: ", err);
result(err, null);
} else {
console.log(res.insertId);
result(null, res.insertId);
}
});};
user.controller.js:
exports.create = function (req, res) {
const new_user = new User(req.body);
console.log(req.body);
if (req.body.constructor === Object amp;amp; Object.keys(req.body).length === 0) {
res.status(400).send({
error: true,
message: 'Please provide all required field'
});
} else {
console.log(new_user);
User.create(new_user, function (err, user) {
if (err) {
res.send(err);
}
res.json({
error: false,
message: "User added successfully!",
data: user
});
});
}};
В этом последнем фрагменте кода приведен вывод console.logs:
{
user_fname: 'toto',
user_name: 'titi',
user_email: 'who@where.how',
user_phone: '1010101010',
user_is_admin: 'false'
}
User {
fname: 'toto',
name: 'titi',
email: 'who@where.how',
phone: '1010101010',
is_admin: 'false'
}
[ 'toto', 'titi', 'who@where.how', '1010101010', 'false' ]
И последнее, но не менее важное: вот сообщение об ошибке, которое я получаю:
ошибка: SqlError: (conn = 357, no: 1064, SQLState: 42000) У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с «set»toto» в строке 1 sql: ВСТАВИТЬ В user (user_fname, user_name, user_email, user_phone, user_is_admin) set ? — параметры:[‘toto’,’titi’,’who @where.как’,’1010101010′,’false’]
Я понимаю, что мой синтаксис неправильный, но, похоже, я не могу найти ничего, что работает. Спасибо за ваше время 🙂
Ответ №1:
Нашел ответ! Итак, поскольку я думал, что мой синтаксис был неправильным, вот правильный способ сделать это:
User.create = function (newUser, result) {
console.log(Object.values(newUser));
dbConn.query("INSERT INTO user(user_fname, user_name, user_email, user_phone, user_is_admin) values(? , ? , ? , ? , ?)", Object.values(newUser), function (err, res) {
if (err) {
console.log("error: ", err);
result(err, null);
} else {
console.log(res.insertId);
result(null, res.insertId);
}
});
};