2012-11-22 73 views

回答

2

這樣做的一個原始方法是使用Meteor.autorun監聽Meteor.userId()的變化。如果你能得到這個,你會知道你已經連接到MongoDB。如果你沒有處理認證,那麼你可以在服務器端創建一個方法,從MongoDB返回一些東西。當它返回一些東西時,在客戶端的成功,你可以開始所有的訂閱。

+0

是的,這是最有用和最簡單的方法。 –

+0

應該有更好的方法來檢查Mongo的準備情況,但我現在認爲它不在Meteor的優先級列表中。 – HGandhi

2

這樣做的最可靠方法是通過Meteor.call調用。如果您將此作爲同步呼叫(無回叫),則客戶端將等待直到呼叫完成。以下是如何做到這一點異步:

Meteor.call('isEverythingReady', param1, 
    function(error, result) { 
     if (error === undefined) { 
     Meteor.subscribe("mystuff"); 
     Session.set("sess1", "whatever"); 
     } else { 
     alert("There was an error during startup."); 
     } 
    }); 

然後

if (Meteor.isServer) { 
    Meteor.methods({ 
    isEverythingReady: function(param1) { 
     // can you connect to database? 
     return true; 
    } 
    } 
} 
+0

我在Meteor的一個項目中遇到了同樣的問題,當我瀏覽他們的文檔並找出自己該如何做時,這個答案確實奏效。但是,您應該列出如何製作函數(將編輯添加到您的答案中) – Charles

+0

不知道我理解您的評論 - 回調函數顯示在上面的代碼片段中。 –

+0

嗯,但是調用的函數沒有列出如何創建它,當我最初嘗試過這個時,我試圖做一個默認函數x()而不是meteor.methods()。至於評論中的問題,是的,你可以用這種方式連接到數據庫。 – Charles

相關問題