2014-01-13 95 views
1

流星說,自動將(在大多數情況下)找出代碼在客戶機上運行,​​什麼樣的代碼在服務器上運行,因此理論上你可以只寫所有的代碼一個.js文件。流星:執行從客戶端控制檯呼叫「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. 將代碼包裝在isClientisServer部分。

否則,你編寫任何代碼將在兩個環境中執行。但是,用戶在客戶端上輸入的任何代碼只會在客戶端上執行。流星專門用來保護這個邊界。

您還可以從客戶端服務器上的method,但同樣的服務器不能被欺騙執行客戶定義的函數。

在你的具體的例子,你總是可以定義集合只有在客戶端上,像這樣:

Pages = new Meteor.Collection(null); 

這將允許你隨意操縱客戶端的集合數據,但不會涉及服務器(沒有東西會被存儲在數據庫中)。