首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Node.JS更新SQL中的值(better-sqlite3)

使用Node.JS更新SQL中的值(better-sqlite3)
EN

Stack Overflow用户
提问于 2019-03-03 07:10:32
回答 1查看 3.7K关注 0票数 8

我目前有一个每个人的数据库,每个人都有一个状态值。我正在尝试更改它们的状态值。

代码语言:javascript
复制
  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的错误,但我尝试的每个函数都会收到这个错误。

我对SQL非常陌生,但我只是想弄清楚这一点,或者任何对我有帮助的文档,因为更好的sqlite3在官方文档中没有任何update函数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-03 07:16:54

我在better-sqlite3 API for the Database class中找不到名为query()的函数。我认为你需要先prepare()一个Statement object,然后再run()它。

此外,列名不能作为绑定参数传递。您的查询应如下所示:

代码语言:javascript
复制
UPDATE people SET status = ? WHERE name = ?

您需要更改以下内容:

代码语言:javascript
复制
let updates = 
    db.query('UPDATE people SET ? WHERE ?', [{ status: status }, { id: id }]);

至:

代码语言:javascript
复制
const stmt = db.prepare('UPDATE people SET status = ? WHERE id = ?'); 
const updates = stmt.run(status, id);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54963965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档