◆MySQLに接続しよう
const mysql = require('mysql'); →mysqlパッケージを読み込み
const connection = mysql.createConnection({
//データベース名、パスワード
});
◆クエリの実行
connection.query('クエリ', クエリ実行後の処理)と書くことで、
Node.jsからデータベースに対してクエリを実行することができます。
例)
connection.query(
'SELECT*FROM items', →クエリ
()=> {
クエリ後の実行処理
}
);
例)実行後の処理
connection.query(
'SELECT*FROM items', →クエリ
(error,result)=> {
console.log(result);
res.render('index.ejs');
)
};
第1引数のerrorにはクエリが失敗したときのエラー情報が、
第2引数のresultsにはクエリの実行結果(ここでは取得したメモ情報)が入ります。
◆取得した値の表示 EJSに値を渡す
connection.query(
'SELECT*FROM items', →クエリを実行
(error,result)=> {
console.log(result);
res.render('index.ejs',{items: results}); →オブジェクトを渡す
)
};
HTMLで
<% items.forEach((item)=>{ %>
}) ;
◆フォームを使ったリクエスト
app.post('create/',(req,res)=>{
追加する処理
一覧を表示する処理
});
◆フォーム作成方法
メモ追加部分を作成
①フォームの値を受け取る準備をしよう(1)
input要素にname属性を指定すると、下の図のようなオブジェクトの形で
情報がサーバーに送信されます。よってサーバー側では
req.body.name属性の値でフォームの値を取得できます。
②フォームの値を受け取る準備をしよう(2)
app.use(express.urlencoded({extended: false}));
app.('/create',(req,res)=> {
console.log(req.body.itemName)→フォームの値を取得する
});
◆データベースに追加する
connection.query(
'INSERT INTO items(name)VALUE('とまと')',
(error,result)=> {
connection.query(
'SELECT*FROM items', →クエリを実行
(error,result)=> {
console.log(result);
res.render('index.ejs',{items: results}); →オブジェクトを渡す
)
};
◆フォームからの値をクエリに使うとき
connection.query(
'INSERT INTO items(name)VALUES(?)',
[req.body.itemName], →配列の要素が入る
(error,result)=> {
connection.query(
'SELECT*FROM items', →クエリを実行
(error,result)=> {
console.log(result);
res.render('index.ejs',{items: results}); →オブジェクトを渡す
)
};
◆リダイレクト
app.post('/create', (req, res) => {
connection.query(
'INSERT INTO items (name) VALUES (?)',
[req.body.itemName],
(error, results) => {
res.redirect('/index');
}
);
});