2013년 11월 30일 토요일

Multiple pub/sub collection in meteor

iron Router를 잘 쓰고 있는데 쓰다 보니 이상한 점이 있다.
페이지별로 subscribe 하는 것까지는 좋지만
당연히 여러 개의 page에 대해 subscribe를 해야 하는데
waitOn 같은 곳에서 여러 개의 collection에 대해 subscribe를 하다 보니 N번 화면을 갱신하기도 하고 코드도 좀 번거롭다.

여러 개의 Collection에 대한 pub/sub을 한 번에 할 수 없을까 생각하고 있었는데
https://github.com/meteor/meteor/pull/716
최근 내용을 보니까 구현이 되어있다!

이것도 undocumented라고 해야 하나 싶다.

아무튼, 좋다.
Posts, Replies 두 개의 Collection이 있다고 할 때 autopublish package를 meteor(혹은 mrt) remove autopublish하여 삭제하고 수동 가입을 구현한다면

/model/model.coffee
@Posts = new Meteor.Collection "posts"
@Replies = new Meteor.Collection "replies"

/client/subscribe.coffee
Meteor.subscribe 'posts-replies'

/server/publish.coffee
Meteor.publish 'posts', ->
  [Posts.find(), Replies.find()]

이렇게 [ ] 배열 형태로 묶어만 주면 된다.
좋은 패치라고 생각한다. 적극적으로 활용하자.