2015-02-06 94 views
1

假設我有一個Collection叫做Tasks其中有幾個任務。
我調用一個方法將任務數組返回給用戶,但由於某種原因它不返回任何內容。流星方法不起作用

下面是一個例子代碼:

if (Meteor.isClient) { 
// This code only runs on the client 
    Template.body.helpers({ 
     tasks: function() { 
      // Show newest tasks first 
      Meteor.call("getTasks", function(error, result) { 
       return result; // Doesn't do anything.. 
      }); 
     } 
    }); 
} 

Meteor.methods({ 
    getTasks: function() { 
     return Tasks.find({}, {sort: {createdAt: -1}}); 
    } 
}); 

任何想法,爲什麼當我調用該方法不返回任何東西?

+0

[如何在模板助手中使用Meteor方法]可能的副本(http://stackoverflow.com/questions/22147813/how-to-use-meteor-methods-inside-of-a-template-helper ) – 2015-02-06 04:40:16

回答

4

Tasks.find()返回一個遊標,通過DDP傳遞給客戶端是沒有意義的。

您可能想要返回Tasks.find().fetch(),但這打敗了Meteor非常好的數據同步機制的目的。

你看過Understanding Meteor's publish/subscribe嗎?

+0

但是輸入'return Tasks.find({},{sort:{createdAt:-1}});'而不是方法調用。 – Israelg99 2015-02-06 03:29:47

+0

它在控制檯中工作,因爲默認情況下會添加autopublish包,這會在服務器上自動設置發佈並在客戶端自動設置訂閱。認真閱讀了解「瞭解」答案:) – 2015-02-06 03:35:38

+0

謝謝!我也讀過這個,它真的解釋了系統! (它也是由Sacha Greif寫的):https://www.discovermeteor.com/blog/understanding-meteor-publications-and-subscriptions/ – Israelg99 2015-02-07 04:22:03