ヘディングのテキスト### 前提・実現したいこと
Expressのapp.getでテーブルを結合した後にapp.postでのクエリの適切な処理
発生している問題・エラーメッセージ
発生している問題
SNSを作っています。
トップページでのapp.getでトップページに表示する投稿のpostテーブルとicon情報を格納しているusersテーブルの結合後にapp.postの処理が適切にされないためかいいねや投稿の削除ができません。
初めて三ヶ月も経っていない若輩者で理解力が足りていませんが助言の方よろしくお願いします。
node
1### 該当のソースコード 2app.get('/',(req,res)=>{ 3 connection.query( //usersとpostを結合しusersに保存しているiconを取得 4 'SELECT * FROM post JOIN users ON post.user_id=users.id ORDER BY post.id DESC', //昇降順をpostのidの降順に 5 (error,results)=>{ 6 res.render('top.ejs',{post:results,errors:[]}); //投稿をトップページに表示 7 } 8 ); 9 }); 10 11 app.post('/',(req,res)=>{ 12 const text=req.body.text; //req.bodyに保存されいている投稿内容を変数textに 13 const user_id=req.session.userId; //セッションにあるuserIdをDBに記録 14 const username=req.session.username; //ユーザーネーム 15 const favo_id=req.body.favoid; //投稿のid 16 const del_id=req.body.del; 17 const errors=[]; 18 var today = new Date(); //日時取得 19 const todays =today.getFullYear() + "-" + (today.getMonth()+1) + "-"+ today.getDate() + "-" + today.getHours() + "-" + today.getMinutes(); 20 const imgUrl=req.body.img; //入力フォームの画像を代入 21 22 23 connection.query( //投稿処理 24 'INSERT INTO post(text,user_id,date,username,img) VALUES(?,?,?,?,?)', 25 [text,user_id,todays,username,imgUrl], 26 (error, results) => { 27 res.redirect('/'); 28 } 29 ); //これは適切に処理されています 30 31 connection.query( //投稿へのいいね+1後に、いいねをしたユーザーのいいね付与数を増やす 32 'UPDATE post SET favo=favo+1 WHERE id=?', //取得した投稿のidを探しいいね+1処理 33 [favo_id], 34 (error_p,results_p)=>{ 35 connection.query( 36 'UPDATE users SET give_like = give_like+1 WHERE id=?', //いいねしたユーザーの付与数+1 37 //ここをusers.give_likeなどにしても適切に動きません 38 [user_id], 39 (error_f,results_f)=>{ 40 }); 41 }); 42 43 44 connection.query( //投稿idを取得し削除 45 //この記述では動きません 46 'DELETE FROM post WHERE post.id=?', 47 [del_id], 48 (error_d,results_d)=>{ 49 50 } 51 ); 52 }); 53 54 55
html
1<div class="post-wrapper"> 2 <%post.forEach((posted)=>{%> 3 4 <div class="post"> 5 <img class="icon" src="<%=posted.icon%>"> 6 <a href=""><%=posted.username%></a> <!--投稿者--> 7 <p class="post-info">| <%=posted.date%> <span class="like"><form action="/" method="post" id="like-form"><%=posted.favo%></span> <button type="submit" name="favoid" value="<%=posted.id%>" id="favo-submit"><i class="fas fa-hands"></i></button></form> 8 9 <%if(posted.user_id ===locals.userId){%> 10 <form action="/" method="post" id="del"> 11 <button type="submit" name="del" value="<%=posted.id%>">delete</button> 12 </form> 13 <%}%></p> <!--投稿日表示--> 14 15 16 <div class="content"> 17 <p><%=posted.text%></p> <!--投稿内容--> 18 </div> 19 <%if(posted.img===""){%> <!--画像のアドレスを入力しimgタグで表示--> 20 21 <%}else{%> 22 <img class="content-img" src="<%=posted.img%>" alt=""> 23 <%}%> 24 </div> 25 <%})%> 26 </div> 27
usersTABLE
1 # 名前 タイプ 照合順序 属性 NULL デフォルト値 コメント 2 1 id 主 int(11) いいえ なし AUTO_INCREMENT 3 4 2 username varchar(15) utf8mb4_general_ci いいえ なし 5 3 email varchar(30) utf8mb4_general_ci いいえ なし 6 4 password char(50) utf8mb4_general_ci いいえ なし 7 5 give_like int(10) いいえ 0 8 6 have_like int(10) いいえ なし 9 7 icon char(150) utf8mb4_general_ci いいえ /images/adminster.jpg 10 11 12
postTABLE
1 # 名前 タイプ 照合順序 属性 NULL デフォルト値 コメント 2 1 id 主 int(11) いいえ なし AUTO_INCREMENT 3 2 text varchar(100)utf8mb4_general_ci はい NULL 4 3 favo int(10) いいえ 0 5 4 user_id int(11) いいえ なし 6 5 date char(20) utf8mb4_general_ciいいえ なし 7 6 username varchar(15) utf8mb4_general_ci いいえ なし 8 7 img varchar(1000) utf8mb4_general_ci いいえ なし 9
試したこと
結合をやめた場合は正常にいいねや削除の処理ができるため、テーブル結合後のクエリの扱いへの理解が足りていないようです。(ORDER BYで結合しサイト上で表示されているデータを取得するexpressの記述法)
HTMLで削除の処理の記述で取得したpos.idの代わりに整数の値をnode.jsに渡し直接クエリの削除を試みましたが処理されませんでした。
やはりクエリの処理がおかしいようです。
####補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー