这里的 node 和 node-sqlite3 行为没有任何问题。这里有两个部分首先解释节点和其他关于 Sqlite 的部分。
Node
您的回调在执行语句后被调用。所以这里没有错,因为你的回调被调用了(正如'null'作为输出所证明的那样)。
Sqlite
如果子句中给出的条件评估为真,则 Sqlite 中的删除查询将删除where
,否则不会删除任何内容。
参考node-sqlite3 文档的 Database#run api:
回调(可选):如果给定,它将在语句准备或执行的任何步骤发生错误时以及在运行查询之后调用。如果发生错误,第一个(也是唯一的)参数将是包含错误消息的错误对象。如果执行成功,第一个参数为空。
因此,在您的情况下,查询执行成功,没有任何错误,导致error
回调函数的参数,null
如您在输出中看到的那样。
此外,如果要检查是否实际删除了任何行,可以使用changes
文档中提到的属性:
如果执行成功,它包含两个名为“lastID”和“changes”的属性,分别包含最后插入的行 ID 的值和受此查询影响的行数。请注意,“lastID”仅在查询是成功完成的 INSERT 语句时包含有效信息,而“changes”仅在查询是成功完成的 UPDATE 或 DELETE 语句时包含有效信息。在所有其他情况下,这些属性的内容是不准确的,不应使用。.run() 函数是设置这两个值的唯一查询方法;所有其他查询方法,例如 .all() 或 .get() 都不会检索这些值。
希望能帮助到你...