2016-08-17 69 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

相关问题