이번 파트에서는, 메뉴에 따른 상세 정보를 읽어와서 보여주는 과정을 배울 것이다.
orientdb 에 저장되어있는 데이터 중에서 title 과 description 을 가져와서 띄워보도록 한다.
메뉴를 눌렀을 때, /topic/:id 를 통해서 URL 로 접근하는 것이기 때문에, 해당 URL 의 id 값을 가져와야한다. id 를 가져올 수 있는 변수 id를 만든다.
var id = req.params.id;
// id 를 통해서, URL 에 있는 rid 에 해당하는 값을 가져올 수 있다.
하지만, id 를 받아올 때, 값이 있을 수도 있고, 없을 수도 있기 때문에 if 구문으로 경우를 나눠준다.
// id 가 있는 경우, topics와 topic을 전달한다.
if(id){
var sql = "SELECT FROM topic WHERE @rid=:rid";
// rid 값으로 전달받은 것을 orientdb 에서 찾아본다.
db.query(sql,{params:{rid:id}}).then(function(topic){
res.render('view', {topics:topics, topic:topic[0]});
})
}
// id 가 없는 경우, topics 만 전달한다.
else{
res.render('view',{topics:topics});
}
topic
으로 담아서 view
에 보낸다.topic
은 리스트 형식으로 이루어져있기 때문에 배열 중에서 첫번째 배열을 가져와야한다.⇒ topic[0]
을 topic 으로 전달한다.
(app_orientdb.js)
app.get(['/topic', '/topic/:id'], function(req, res) {
var sql = 'SELECT FROM topic';
db.query(sql).then(function(topics){
var id = req.params.id;
if(id){
var sql = 'SELECT FROM topic WHERE @rid=:rid';
db.query(sql, {params:{rid:id}}).then(function(topic){
res.render('view', {topics:topics, topic:topic[0]});
});
}else{
res.render('view', {topics:topics});
}
});
});
app_orientdb.js
에서 보낸 topic 을 jade 에 띄우기 위해서,
artcle
부분에 title → topic.title / description → topic.description 으로 변경한다.