【Nodejs, Express, Sqlite3】DB登録・取得
const sqlite3 = require('sqlite3').verbose()
const db = new sqlite3.Database(":memory:")
// テーブルを作成
db.run("CREATE TABLE TName (number INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)")
module.exports = {
// 登録
registName: (req, res) => {
db.serialize(() => {
// ログを出力
console.log('登録: '+req.body.name)
// クロスオリジン対策(ローカル動作時のみ使用)
res.header("Access-Control-Allow-Origin", "*")
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
// データを登録する
const stmt = db.prepare("INSERT INTO TName(name) VALUES (?)")
stmt.run(req.body.name)
stmt.finalize()
res.end()
})
},
getName: (req, res) => {
db.serialize(() => {
// ログを出力
console.log('取得: '+req.body.number)
// クロスオリジン対策(ローカル動作時のみ使用)
res.header("Access-Control-Allow-Origin", "*")
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
// データを取得して送信する
db.get('SELECT number, name FROM TName WHERE number = $number', { $number: req.body.number }, (err, row) => {
res.end(row.name)
})
})
}
}<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>DB登録・取得テスト</title>
<script>
function registName(name) {
$.ajax({
url: 'http://localhost:8080/regist-name',
type: 'POST',
data: {
'name': name
},
dataType: 'text'
}).done(function( data, textStatus, jqXHR ) {
//成功
console.log("成功:"+data)
}).fail(function( jqXHR, textStatus, errorThrown) {
//失敗
console.log("失敗")
}).always(function( jqXHR, textStatus) {
//通信完了
console.log("通信完了")
})
}
function getName(number) {
$.ajax({
url: 'http://localhost:8080/get-name',
type: 'POST',
data: {
'number': number
},
dataType: 'text'
}).done(function( data, textStatus, jqXHR ) {
//成功
console.log("成功:"+data)
}).fail(function( jqXHR, textStatus, errorThrown) {
//失敗
console.log("失敗")
}).always(function( jqXHR, textStatus) {
//通信完了
console.log("通信完了")
});
}
</script>
</head>
<body>
<!-- データ登録 -->
<input type="text" id="name" />
<button onclick="registName($('#name').val())">RegistName</button><br />
<!-- データ取得 -->
<input type="text" id="number" />
<button onclick="getName($('#number').val())">GetName</button>
<!-- jQuery -->
<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
</body>
</html>"use strict"
const express = require('express')
const app = express()
const bodyParser = require('body-parser')
// 自作DB接続モジュール読み込み
const dbConn = require('./db-connect')
// bodyParserの設定
app.use(bodyParser.urlencoded({
extended: true
}))
app.use(bodyParser.json())
app.use(express.static('public'))
// 8080ポートで待ち受け
app.listen(8080)
// データ登録
app.post('/regist-name', dbConn.registName)
// データ取得
app.post('/get-name', dbConn.getName){
"name": "test",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.16.1",
"express": "^4.14.1",
"sqlite3": "^3.1.8"
}
}