フロントエンドでnode.js、sqlite3(anyDBを使用)、およびjavascriptを使用しています。
私はテーブルを作りました:
conn.query('CREATE TABLE messages (id INTEGER PRIMARY KEY AUTOINCREMENT, room TEXT, nickname TEXT, body TEXT, time INTEGER)').on('end', function(){
console.log('Made table!');
});
私はテーブルに何かを挿入しました:
conn.query('INSERT INTO messages VALUES ($1, $2, $3, $4, $5)', [null, request.params.roomName, request.body.nickname, request.body.message, null]).on('error', console.error);
クライアント側の js で、次のコードを書きました。
window.addEventListener('load', function(){
var intervalID = setInterval(updateMessages, 4000);
}, false);
function updateMessages() {
var req = new XMLHttpRequest();
req.open('GET', '/' + roomName + '/messages.json', true);
req.send();
//GET ACCESS TO RESPONSE IN ORDER TO ADD IT TO THE PAGE
}
サーバー側では、次のコードを書きました。
app.get('/:roomName/messages.json', function(request, response){
var roomName = request.params.roomName;
var messages = conn.query("SELECT ALL body FROM messages where room="+roomName+";");
response.send(messages);
});
SQL ステートメントは正しいように見えますか? ルームがまだデータベースにない場合にサーバーがクラッシュしないように、select ステートメントをどのように記述すればよいですか?
最後に、応答をパッケージ化してパブリック js ファイルに送り返し、次にページに送り返すにはどうすればよいですか?