복붙노트

[MONGODB] 유성 - collection.find ()는 항상 모든 필드를 반환

MONGODB

유성 - collection.find ()는 항상 모든 필드를 반환

이 (약간 성가신 문제)에 란 내가 컬렉션의 모든 레코드를 검색하는 것을 시도하고 있지 않다 (또는 쇼) 특정 필드 (점수)를 보여줍니다. 이것은 단지 예입니다 내 실제 코드를 반영하지,하지만 문제는 항상 재현. 내가 제외하고 필드는 매우 큰 나는 단지 가능한 기록의 메뉴를 생성하기 위해 노력하고있어.

같은 명령

    players.find({},{score:1})
    players.find({},{score:0})

항상 대신 제외 트리거의 모든 필드를 반환 / MongoDB를에 포함. 템플릿이 잠재적으로 HTML로 렌더링됩니다 어떤 데이터를 제어 할 수 있기 때문에 오전 나는 아무것도 걱정? 또 관계없이 클라이언트 측으로 전송되는 데이터 느낌; 콘솔에 나타납니다.

해결법

  1. ==============================

    1.당신의 구문이 조금 떨어져, 그것은해야

    당신의 구문이 조금 떨어져, 그것은해야

    CollectionName.find({}, {fields: {'onlyThisField':1}});
    

    또는

    CollectionName.find({}, {fields: {'everythingButThisField':0}});
    

    템플릿은 참으로 표시되는 데이터를 제어 않지만, 많은 시나리오는 여전히 어디에 필드 제한 일리 - 일반적인 두 사람은 데이터 나 효율 (모든 레코드의 일부 필드의 '현재'기록의 모든 분야)의 개인 정보 보호

    당신이 그것을 언급 didnt는, 그러나 이것은 일반적으로 게시 함수 내에서입니다 - http://docs.meteor.com/#meteor_publish 참조 - 또한 클라이언트로 볼 수 있습니다 수정 필드가 있지만, 한계 데이터는 클라이언트가 아래로 전송되지 않습니다 단지 템플릿 - 서버 측 필드 감소 / 선택은 서로 다른 장점이 있습니다

    --

    당신이 그 활성이 있고 가장 일반적으로 필드를 사용하는 것이 어디에있는 기능을 직접 게시하여 작성하는 경우 당신이 너무 autopublish 패키지를 삭제 한 것을 다시 확인하지만 경고가 표시한다

  2. ==============================

    2.당신이 Collection.find ()에서 일부 필드를 제어하려는 경우 첫째, 당신은이 방법을 시도 할 수 있습니다 :

    당신이 Collection.find ()에서 일부 필드를 제어하려는 경우 첫째, 당신은이 방법을 시도 할 수 있습니다 :

    CollectionName.find({}, {fields: {field:1}});
    

    하지만 그것은 단지 서버에서 작업을했다.

    또는이 시도 :

    서버에서 :

    Meteor.publish("myCollection", function () {
        return SvseTree.find({},{fields: {field:1}});
    });
    

    클라이언트의 경우 :

    Meteor.subscribe("myCollection");
    

    다음 유성 제거 autopublish를 실행합니다.

    당신이 Collection.find (의 배열을 얻으려면 두 번째)을 수행하려고 :     Collection.find () (인출).;

  3. from https://stackoverflow.com/questions/15961456/meteor-collection-find-always-returns-all-fields by cc-by-sa and MIT license