Node.jsのpostとgetで詰まったところ

やりたいこと

 

トップページ(top.ejs)内の検索ボックス(inputタグ)に入力した値を使用して検索をかける。

検索ワードを含む記事をデータベースから取得し一覧(d_search.ejs)で表示させる。

 

試したこと

 

一覧を表示させるために

d_search.jsを用意

このファイルはtop.ejsからpostした内容の処理と一覧画面を表示させるgetの処理を記述している。

 

d_search.js

const express = require('express');
const router = express.Router();
const connection = require('../mysqlConnection');
const multer = require('multer');//画像取得ようパッケージ(multer)読み込み
const moment = require('moment');//日付取得用パッケージ読み込み

 
router.post('/', (req, res) => {
// export let search = req.body.search;
console.log(req.body.search)//inputタグの値が入る
console.log("post検索:"+ req.body.search)
res.redirect('/d_search')//ここで下のget処理に移動する
});


router.get('/',(req,res)=>{
// import { search } from './d_search.js';
//ここに上のpostで取得した値を取得したい。
var sql = 'SELECT D.id, D.user_id, D.title, D.image, D.tag, D.text,ifnull(U.name, \'名無し\') AS name, DATE_FORMAT(D.created_at, \'%Y年%m月%d日 %k時%i分%s秒\') AS created_at FROM diary D LEFT OUTER JOIN user U ON D.user_id = U.user_id ORDER BY D.created_at DESC'; // 変更
connection.query(sql,(error,results)=>{
res.render('d_search.ejs',{items:results})
// console.log(results)
console.log('get検索結果表示')
});
})

module.exports = router;

 

top.ejs(今回使用している部分を抜粋)

<form action="/d_search" method='post'>
<span class='search-bar'>店舗検索</span><input type="text" name='search' placeholder="ワード入力" required>
<input type="submit" value='検索'>
</form>

 

 

ターミナルで確認すると、検索の値をpostした時、

req.body.search

に検索した文字の値が格納されることを確認。

この値を変数に入れて、postの下のget記述に持っていき、var sqlで定義しているSELECT文の後半に WHERE title LIKE '%「postした変数」%'

とすれば検索結果を取得出来るのではと考えた。

 

しかし、d_search.jsのpostで

export let search = req.body.search;

を定義し

d_search.jsのgetで

import { search } from './d_search.js';

をimportしようとしても

SyntaxError: Unexpected token 'export'

のエラーがターミナルに表示される。

 

inputタグでpostした値をsqlで使用するにはどう言った処理が必要なのか

検討を続ける。