2014-01-13 1 views
1

Meteor는 자동으로 (대부분의 경우) 클라이언트에서 실행할 코드와 서버에서 실행할 코드를 파악하여 이론적으로 모든 코드를 작성할 수 있습니다 하나의 .js 파일.Meteor : 클라이언트 콘솔 "everywere"에서 호출 실행

내 브라우저 콘솔에 코드를 작성하고 코드를 내 서버의 파일에 넣은 것처럼 실행할 수 있기를 바랍니다. 브라우저 콘솔에서 예를 들어

:

[20:08:19.397] Pages = new Meteor.Collection("pages"); 
[20:08:30.612] Pages.insert({name:"bro"}); 
[20:08:30.614] "sGmRrQfezZMXuPfW8" 
[20:08:30.618] insert failed: Method not found 

유성 내가 서버에 new Meteor.Collection("pages");을 할 필요가 있기 때문 "방법을 찾을 수 없습니다"말했다.

위의 automagic을 사용하든 내 브라우저 콘솔에서 명시 적으로 "서버에서 다음 코드 줄을 실행하십시오"라는 말을 사용하든이 문제를 해결할 수 있습니까?

답변

3

음은 "자동적으로"그것을 알아낼하지 않습니다 - 당신은 매우 명시 적으로 두 가지 중 하나를 수행해야합니다 :

  1. 별도의 코드를 clientserver 디렉토리에.
  2. isClient 또는 isServer 섹션에 코드를 두십시오.

그렇지 않으면 작성한 코드가 두 환경에서 모두 실행됩니다. 그러나 클라이언트에서 사용자가 입력 한 코드는 클라이언트에서만 실행됩니다. Meteor는이 경계를 보호하기 위해 특별히 설계되었습니다.

클라이언트에서 서버의 method을 호출 할 수 있지만 서버는 클라이언트 정의 함수 실행을 속일 수 없습니다.

특정 예에서

, 당신은 항상 같은 클라이언트에서만 컬렉션을 정의 할 수 있습니다 : 당신이 자유롭게 클라이언트의 수집 데이터를 조작 할 수 있지만, 서버를 포함하지 않습니다

Pages = new Meteor.Collection(null); 

(아무것도 DB에 저장되지 않습니다).