Javascript 为什么我能';是否不更改SQLite中的值?
我需要从SQLite3数据库中获取用户id,并用新值更新它。但是我有一些麻烦Javascript 为什么我能';是否不更改SQLite中的值?,javascript,sqlite,Javascript,Sqlite,我需要从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,
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(用户)
返回:
{ 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
为什么会出现这种错误?如果我删除此代码,一切都会正常…SQLite不知道您的
用户
函数参数。使用命令参数
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命令字符串的范围内
请参阅:(如果这是您正在使用的API)。我认为原因是,当您对字符串使用反勾号(`)时,需要将表达式放入
${}
中。因此,除了字符串“user.id”,您将在字符串中使用反勾号包装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,所以这可能无法解决问题。我也找到了解决方案:
db.run('REPLACE INTO admins(id,user\u id,first\u name,last\u name)值(${user.id},${user.user\u id},${user.first\u name},${user.first\u name},“$NEW last name”))
不过还是要谢谢你