ここでは、ノードとnode-sqlite3の動作に問題はありません。ここでは、ノードに関して最初に説明する2つの部分と、Sqliteに関して他の部分を説明します。
Node
ステートメントの実行後にコールバックが呼び出されます。コールバックが呼び出されているので、ここでは何も問題はありません(出力として「null」で証明されています)。
Sqlite
SqliteのDeleteクエリは、where
句で指定された条件がtrueと評価された場合に削除され、それ以外の場合は何も削除されません。
node-sqlite3ドキュメントのDatabase#run apiから参照:
コールバック(オプション):指定した場合、ステートメントの準備または実行のいずれかのステップでエラーが発生したとき、およびクエリが実行された後に呼び出されます。エラーが発生した場合、最初の(そして唯一の)パラメータはエラーメッセージを含むエラーオブジェクトになります。実行が成功した場合、最初のパラメーターはnullです。
したがって、この場合、クエリの実行はエラーなしで成功し、出力に表示されるerror
ようにコールバック関数への引数が生成さnull
れます。
さらに、行が実際に削除されたかどうかを確認する場合changes
は、ドキュメントに記載されているプロパティを使用できます。
実行が成功した場合、最後に挿入された行IDの値とこのクエリの影響を受ける行数をそれぞれ含む「lastID」と「changes」という名前の2つのプロパティが含まれます。「lastID」には、クエリが正常に完了したINSERTステートメントの場合にのみ有効な情報が含まれ、「changes」には、クエリが正常に完了したUPDATEまたはDELETEステートメントの場合にのみ有効な情報が含まれることに注意してください。他のすべての場合、これらのプロパティの内容は不正確であり、使用しないでください。.run()関数は、これら2つの値を設定する唯一のクエリメソッドです。.all()や.get()などの他のすべてのクエリメソッドは、これらの値を取得しません。
それが役に立てば幸い...