フィヨルドブートキャンプでNode.jsを使ってCLIを作成する課題があり、データの保存先をSQLiteにしたくてnode-sqlite3というnpmを使ってみたので、導入方法をメモしておきます。(SQLite本体がマシンの中に入っていることと、Node.jsがインストールされていることが前提になります。)
インストール
$ npm install sqlite3 --save-dev
ローカルインストールなので--save-dev
オプションをつけました。
モジュールの読み込み
import * as sqlite3 from "sqlite3"
エラー。 どうして…。
TypeError: sqlite3.Database is not a constructor
上記のエラーを調べてみると、同じ状況のissueを見つけました。
TypeError: sqlite3.Database is not a constructor with ES6 imports
ここの回答によるとどうやらimport
の書き方を微妙に間違えているようで、以下のように書き直すことで解決しました。
import sqlite3 from "sqlite3";
任意のクエリを発行
あとはデータベースとテーブルを作成すれば、Node.jsのコード内で任意のクエリを発行してDBの操作ができるようになります。
const db = new sqlite3.Database('DB名'); db.serialize(() => { db.run('CREATE TABLE if not exists テーブル名(カラム名)'); db.run('INSERT INTO テーブル名 (カラム名) values(?)', ['hoge']); });
注意点
sqlite3が行う処理は基本的に非同期処理となります。
そのため、上記のようにテーブルを作成→レコードの保存という順序を守って同期的に処理を実行したい場合はDatabase#serialize
メソッドで一連の処理を囲んであげる必要があります。
まとめ
以上のように、かなり手軽に導入できてすぐにSQLiteを操作することができるようになります。 特にMacは最初からSQLiteが入っているのでnpmのインストールだけで必要な作業はほぼ終わってしまうため非常に便利です。