Blaze에서 React로 갈아타게 한 버그가 있었는데, React로 다시 구현한 후에도 그 버그를 다시 만났다.

 

찾아보니까, Minimongo에 관련된 것 같다. Meteor는 풀스택이다 보니, 서버와 클라이언트 모두에서 DB에 접근해야 할 상황이 생긴다. 그런데 client에 db에 대한 full access를 줄 수 없으므로, (보안상, 성능상) minimongo라는 패키지를 이용해서 서버쪽의 mongo를 클론해서 클라에서 사용한다.

그런데 일단 내 경험상으로는 클라이언트쪽에서 컬렉션에 접근하려고 하면 빈 컬렉션에밖에 닿을 수 없고, 만약 그 컬렉션(현재로서는 비어 있는 컬렉션)에 doc을 추가하거나 편집하면 서버쪽에 그 doc이 추가된다. 그러나 당연히 비어 있는 컬렉션이기 때문에 있는 원소를 찾아오거나(find, findOne) 있는 원소를 편집하는 등의 행동은 할 수 없었다.

사실, 지금 메테오를 쓰면서 어디부터 서버이고 어디부터 client인지 구별할 수 없다. 버그의 행태를 보면 분명 링크를 타고 갔을 때는 되지만, 그 주소로 바로 가면 안되는 것이기 때문에, 정상적인 링크를 따라 갈때는 서버이고, 주소를 바로 치면 클라이언트인건가?? 잘 모르겠다.

일단 이건 무시하고, 정리를 한 다음에 고치기로 해야겠다. Blaze하고 기능이 같아졌으니 master에 merge했다.