2016-08-17 84 views
1

我想從MeteorJS服務器端方法返回一個MongoDB遊標。我可以將數組返回給服務器端,但無法弄清楚如何將其傳回客戶端。什麼是最好的方法來做到這一點?從Meteor服務器方法返回數組到客戶端的最佳做法是什麼?

//current server side 
if (Meteor.isServer) { 
    Meteor.methods({ 
     'mongo.updateSearchQuery' (searchQuery) { 
      var queryCursor = remoteEvents.find({ 
       $text: { 
        $search: searchQuery 
       } 
      }).fetch() 
      console.log(queryCursor); 
      return (
       queryCursor 
      ) 
     } 
    }); 
} 

//current client side 
callMongoTextSearch() { 
    var searchQuery = this.state.searchQuery; 
    var searchQuery = Meteor.call('mongo.updateSearchQuery', searchQuery); 
    console.log(searchQuery); 
} 
+2

爲什麼使用方法而不是pub-sub? –

+0

我當然願意使用Pub-sub,我沒有意識到這將允許我動態改變查詢。 – ElJefeJames

+0

是的,您可以像方法一樣將參數傳遞給出版物。然而,與方法不同,結果是被動的。 –

回答

2

你必須要使用返回的結果從你的服務器Meteor.methods使用回調爲您Meteor.call的最後一個參數。無論你返回你的Meteor.methods將作爲回調的第二個參數傳遞。

例如:

Meteor.call('mongo.updateSearchQuery',searchQuery, function (error, result) { 
    console.log(result); // result will be your `queryCursor` 
}); 

你或許應該也確保你的異步任務,例如概念How do I return the response from an asynchronous call?

+0

將結果賦給'searchQuery'沒有任何意義。 –

+0

我同意,這來自OP的代碼:-) – ghybs

+0

感謝您的詳細評論,很有道理! – ElJefeJames

相關問題