最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

删除后的SQLite回调

运维笔记admin8浏览0评论

删除后的SQLite回调

删除后的SQLite回调

我正在尝试删除功能,确认删除了某些内容。如果未找到行或已将其删除,则当前代码行变量将返回空白。

app.delete('/api/devices/:id', (req, res) => {
    db.all('delete from devices where id = ' + req.params.id, (err, rows) => 
{
        if (err) {
            return res.status(500).send(err)
        }
        else {
            return res.status(204).send()
        }
    })
})

如果没有找到,我想返回404,如果它实际上已被删除,我想返回204.我如何区分它们?

我知道我可以在删除它之前进行选择查询,但必须有更好的方法。

回答如下:

来自this tutorial

如果DELETE语句成功执行,则回调函数的this对象将包含changes属性,该属性存储已删除的行数。

您应该考虑使用run方法,而不是all方法用于DELETE查询,因为您不期望任何结果。

摘录自api doc

使用指定的参数运行SQL查询,然后调用回调。它不会检索任何结果数据。

...

如果执行成功,则此对象将包含两个名为lastID的属性和更改,这些属性分别包含最后插入的行ID的值和受此查询影响的行数。请注意,当查询是成功完成的INSERT语句时,lastID仅包含有效信息,并且当查询成功完成UPDATE或DELETE语句时,更改仅包含有效信息。在所有其他情况下,这些属性的内容不准确,不应使用。 .run()函数是唯一设置这两个值的查询方法;所有其他查询方法(如.all()或.get())都不会检索这些值。

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论