我试图从MeteorJS服务器端方法返回MongoDB游标。我可以将数组返回到服务器端,但无法弄清楚如何将其传回客户端。最好的方法是什么?
//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);
}
答案 0 :(得分:2)
您必须使用回调作为Meteor.call
的最后一个参数才能使用服务器Meteor.methods
的返回结果。无论您在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?