Node.jsの勉強として、SQLiteを使用して掲示板のサーバプログラムを作成しています。
基本的なSQLiteの使用例は以下の様になると思います。
js
1const sqlite = require('sqlite3').verbose(); 2const db = new sqlite.Database('example.sqlite'); 3 4db.serialize(() => { 5 db.each('SELECT * FROM user', (error, row) => { 6 if(error) { 7 console.error('Error!', error); 8 return; 9 } 10 11 console.log(row.name + ' … ' + row.age); 12 }); 13}); 14 15db.close();
掲示板のサーバプログラムの場合、
- ユーザーが投稿した時
- ユーザーが掲示板を見に来た時
それぞれでデータベースへのアクセスが必要になりますが、
アクセスするたびに毎回
db = new sqlite.Database('bbs.sqlite'); /* データベースへアクセス */ db.close();
としたほうが良いのでしょうか。
それとも下記の様に
var http = require("http"), fs = require("fs"), ejs = require("ejs"), qs = require("querystring"); var sqlite = require('sqlite3').verbose(); var settings = require("./settings"); var db = new sqlite.Database('bbs.sqlite'); server.on("request", function(req, res) { //POSTで投稿 if (req.method === 'POST') { db.run("INSERT~~"); db.all("SELECT~~"); // 画面更新 } else { db.all("SELECT~~"); // 画面更新 } }); server.listen(settings.port, settings.host); console.log("server listening...");
サーバ起動時に一度だけnew sqlite.Databaseを行うほうが良いのでしょうか。
しかしこの場合、server.listen()後にdb.close()してしまうと
ノンブロッキングのため即closeされてしまうと思います。
どのように実装すればよいかご教授お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/29 19:20