我需要从SQLite3数据库获取用户ID并用新值更新它。但是我有一些麻烦。

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


为什么显示此错误?如果我删除此代码,一切都会变好...

最佳答案

我认为原因是,当使用反引号(`)作为字符串时,需要将表达式放在${}内。因此,您将拥有由反引号引起来的字符串内的id对象的user字段的值,而不是字符串“ user.id”:

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,因此可能无法解决问题。

10-07 19:19
查看更多