dotinstallでexpressの基礎を学んでいるのですが、renderとreq.params.がはっきりと理解できておりません。もしよろしければご教授いただきたいです。
Javascript
1//app.js 2//※省略 3app.get('/', post.index); 4app.get('/posts/:id([0-9]+)', post.show); 5//※省略
Javascript
1//post.js 2//※省略 3var posts = [ 4 {title:'title0',body:'body0'}, 5 {title:'title1',body:'body1'}, 6 {title:'title2',body:'body2'} 7]; 8 9exports.index = function(req,res){ 10 res.render('posts/index',{posts:posts}); 11}; 12 13exports.show = function(req,res){ 14 res.render('posts/show',{post:posts[req.params.id]}); 15}; 16//※省略
Javascript
1//index.ejs 2//※省略 3<h1>Posts</h1> 4<ul> 5<% for (var i=0; i<posts.length; i++) 6<li> 7 <a href="/posts/<%= i %>"><%= posts[i].title %></a> 8 <input type="hidden" name="id" value="<%= i %>"> 9 <input type="hidden" name="_csrf" value="<%= csrftoken%>"> 10 </form> 11</li> 12<% } %> 13</ul> 14//※省略
Javascript
1//show.ejs 2//※省略 3<h1><%= post.title %></h1> 4<p><%= post.body %></p> 5//※省略
無知のため、間違いなどあると思いますが、今私が理解できている処理の流れを書かせていただきます。
まず、urlがindexの際はapp.jsのapp.get('/', post.index);でpost.jsファイルのindexメソッドが呼ばれ
index.ejsファイルを読み込み?、第二引数にはindex.ejsにpostsの配列を渡す。
そしてforでループし、順番に配列の中身を取り出していく。
生成されたリンクをクリックすると、urlが/posts/<%= i(整数) %>にアクセスし、
app.jsの、app.get('/posts/:id([0-9]+)', post.show);でpost.jsファイルのshowメソッドが呼ばれる。
ここからが理解できていません。
この時に渡すデータとしてpost:posts[req.params.id]とありますが、
postsの配列にidというキーはなく、またshow.ejsではtitleやbodyも呼び出しています。
渡したのはidとあるのでpost:整数ではないのかと思うのですが、この
post:posts[req.params.id]は何をどのようにしてshow.ejsへ渡しているのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/19 06:55
2017/11/19 11:47