リレーショナルデータベース

リレーショナルデータベースは、環境構築が容易な SQLite を利用する。

SQLite そのものを別途インストールする必要はなく

$ npm i sqlite3@4.2.0

と入力したら大量のメッセージが!

$ npm i

> leveldown@5.6.0 install /path/to/todo-data-storage/node_modules/leveldown

> node-gyp-build

...

+ sqlite3@4.2.0

package.json を開くとパッケージ名が書かれている。問題なくインストールできたようです。

...

    "dependencies": {

    "express": "^4.17.1",

    "isomorphic-fetch": "^3.0.0",

    "nodemon": "^2.0.6",

    "sqlite3": "^4.2.0",

    "uuid": "^8.1.0"

},

...

node-sqlite3 には

The module uses node-pre-gyp to download a pre-compiled binary for your platform, if it exists. Otherwise, it uses node-gyp to build the extension.

node-pre-gyp がよきに計らってくれたと理解した。

データの更新と削除

UPDATE 文は WHERE 句に該当する行が存在しなくてもエラーを返しません。

DELETE 文も WHERE 句に該当する行が存在しなくてもエラーを返さない

オリジナルの db.run() のコールバック関数の this を参照できません。 db.run() の Promise 化はこのことを考慮して、 util.promisify() は使わず独自に実装する必要があります。

「sqlite3 では」との但し書きがないので、リレーショナルデータベース全般で起こりうるのだろう。文字通り受け取っておく。

SQL 文で WHERE 句を使うことになるので、ありがたくコードを拝借します。