이번 파트에서는, 메뉴에 따른 상세 정보를 읽어와서 보여주는 과정을 배울 것이다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e03b7759-95aa-4cd1-bf5f-9f9cf84b928f/Untitled.png

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[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 으로 변경한다.