sql - 使用 Node.JS 更新 SQL (better-sqlite3) 中的值
问题描述
我目前有一个包含每个人的人的数据库,他们拥有一个状态值。我正在尝试更改他们的状态值。
const id = parseInt(req.params.id , 10);
const { valid, messageObj } = validateId(id);
if (!valid) {
res.status(400).send(messageObj);
}
let { status, priority } = req.body;
let people = db.prepare('select * from people').all();
const person = people.find(person => person.id === id);
if(status !== 'none' & status == 'ready' || status == 'done'){
let updates = db.query(
'UPDATE people SET ? WHERE ?',
[{ status: status }, { id: id }]
);
}
我不断收到错误,db.query is not a function
但对于我尝试的每个功能,我都会得到这个错误。
update
对 SQL 来说很新,但只是想弄清楚这一点或任何对我有帮助的文档,因为 better-sqlite3在官方文档中没有任何功能。
解决方案
我找不到query()
在better-sqlite3 API 中为Database
class调用的函数。我认为你需要prepare()
一个Statement
object,然后run()
它。
此外,列名不能作为绑定参数传递。您的查询应如下所示:
UPDATE people SET status = ? WHERE name = ?
你需要改变这个:
let updates =
db.query('UPDATE people SET ? WHERE ?', [{ status: status }, { id: id }]);
至:
const stmt = db.prepare('UPDATE people SET status = ? WHERE id = ?');
const updates = stmt.run(status, id);
推荐阅读
- azure-ad-b2c - Azure AD B2C:使用条件访问技术配置文件对有风险的用户进行补救
- intellij-idea - intellij 22021.2.2 grails app forge 没有显示任何配置文件
- reactjs - 在 React 中将不同的参数带到同一页面时,数据未加载
- port - 服务器 minecraft 无法转发端口(tcp 25565)
- python-3.x - 考虑使用 items() 进行迭代
- javascript - 如何将数组数组从 javascript 传递到汇编脚本
- nlp - 预训练的 roberta 关系提取属性错误
- r - 使用动态创建的变量来选择 mutate 中的列
- python - 如何从 30 个 csv 文件制作直方图以绘制直方图,然后使用高斯函数和标准差绘制直方图?
- vscode-extensions - 使用 VSCODE.dev 时的 JSON 格式(vscode 的 web 版本)