Почему я не могу изменить значения в SQLite? - PullRequest
0 голосов
/ 30 октября 2018

Мне нужно получить идентификатор пользователя из базы данных SQLite3 и обновить его новыми значениями. Но у меня есть некоторые проблемы с этим.

db.each(`SELECT * FROM admins WHERE id = 1`, function(err, user) {
    console.log(user);
    db.run(`REPLACE INTO admins (id, user_id, first_name, last_name) VALUES 
    (user.id, user.user_id, user.first_name, 
    "NEW LAST NAME");`)
})

console.log(user) возвращает:

{ id: 1,
user_id: 482078708,
first_name: 'ExampleFirstName',
last_name: 'ExampleLastName'}

events.js:183
  throw er; // Unhandled 'error' event
  ^

Error: SQLITE_ERROR: no such column: user.id

Почему это показывает эту ошибку? Если я удаляю этот код, все становится хорошо ...

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Я думаю, причина в том, что вам нужно поместить выражения внутрь ${}, когда вы используете обратные символы (`) для строки. поэтому вместо строки "user.id" у вас будет значение поля id объекта user внутри строки, обернутого обратными чертами:

db.run(`REPLACE INTO admins (id, user_id, first_name, last_name) VALUES 
    (${user.id}, ${user.user_id}, ${user.first_name}, 
    "NEW LAST NAME");`)

Но я не знаю о sqlite, так что это может не решить проблему.

0 голосов
/ 30 октября 2018

SQLite не знает ваш параметр функции user. Используйте параметры команды

db.run(`REPLACE INTO admins (id, user_id, first_name, last_name) VALUES (?, ?, ?, ?);`,
       user.id, user.user_id, user.first_name, "NEW LAST NAME")

Обратите внимание, что теперь ссылки на user находятся за пределами командной строки SQL.

См .: База данных # run (sql, [param, ...], [callback]) (если это API, который вы используете).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...