2017-12-04 8 views
1

MongoDB 콜렉션 Foods이 약 1000 개의 필드가있는 약 8000 개의 항목과 함께 유티 앱에 있습니다.콜렉션을 가져올 때 Meteor 서버 응답이 느립니다.

어떤 이유로 클라이언트에 서버 메서드를 호출했을 때 응답 시간이 매우 느립니다 (초). 디버깅을 위해, 나는 하나씩 물건을 제거 해왔다. 지금, 관련된 어떤 함수에서도 콜렉션을 사용하지 않습니다 (서버 메소드를 console.log로 대체 한 것조차도). 서버에 import { Foods } from '../imports/collections.js'; 라인을 추가하면 응답 속도가 느려집니다. 그렇지 않으면 빨리됩니다.

왜 이런 사람이 될 수 있는지 아는 사람이 있습니까?

답변

3

참고 : OP는 이미 만족스런 질문에 대답했습니다. 그러나 Meteor의 자동 게시 동작을 제어하는 ​​맥락에서 비슷한 문제가있는 사람들을 위해 다음 정보가 지적되어야합니다.


는만큼 autopublish이 패키지 목록에 존재하는, 각 컬렉션은 Mongo.Collection가 생성되고, 바로 그 순간에 클라이언트에 게시합니다.

이 코드는 Mongo.Collection constructor입니다.

Mongo.Collection 생성자가 포함 된 파일을 가져 와서 자동 게시가 실행됩니다 (사용자의 경우).

그러나 자동 게시를 방지하기 위해이 컬렉션 만 원할 경우 autopublish 패키지를 제거하지 않아도됩니다.

Mongo.Collection 생성자는 옵션이있는 개체를 두 번째 매개 변수로 사용합니다. 다음과 같은 옵션을 추가 할 수 있습니다 (활성 autopublish을하면서) 자동이 컬렉션에 대해서만 게시 방지하기위한 방법은 다음과 같습니다

{ 
    _preventAutopublish: true, 
    // ... other options if desired 
} 

하여 주어진 음식 모음의 예는 옵션 is not documented 비록

export const Foods = new Mongo.Collection('foods', {_preventAutopublish: true}); 

수, 그것은 프로토 타이핑 할 때 매우 유용합니다.

그러나 autopublishnot secure이며 서버에 배포 할 것으로 예상되는 릴리스에 있어서는 안됩니다.

0

그래서 대답은 쉽습니다.

으로는

기본적으로, 유성은 자동으로 연결된 각 클라이언트에 컬렉션에있는 모든 문서를 게시의 Meteor docs 말했다. 이 동작을 해제하려면 자동 게시 패키지를 제거하십시오.

그래서 컬렉션을 가져 오기 만하면 Meteor에서 공개하고 싶다고 해석합니다. 즉, 명시 적으로 아니더라도 느리게 만드는 것입니다. 그것을 사용합니다.

+0

왜 다른 사람이 제공 한 대답과 기본적으로 같은 대답으로 자신의 질문에 대답합니까?가짜 인터넷 포인트로 노력한 사람에게 감사하십시오 –

+0

간단히 말해서, 내가 대답했을 때, 그는 아직 대답하지 않았기 때문에 ..., 그리고 자신의 질문에 대답하는 것은 받아 들일 수 있습니다. 그리고 나는 그가 대답을 올렸을 때 그의 대답을 upvote했다. – guillefix

+0

안녕하세요, 죄송합니다. 지난 달 비슷한 문제로 고생 한 이후로 나는 당신과 다른 사람들에게 도움이된다고 생각했기 때문에 기본적으로 그 확장 된 정보로 대답하고 싶었습니다. 편집으로 내 답변에 추가하겠습니다. – Jankapunkt