2013-03-19 56 views
5

我想將屬性添加到發佈到客戶端的對象。在發佈之前更改集合

我的發佈功能看起來像

Meteor.publish("forms", function() { 
    return Forms.find(); 
}); 

我願做這樣的事情

Meteor.publish("forms", function() { 
    var forms = Forms.find(); 
    forms.forEach(function (form) { 
    form.nbForms = 12; 
    } 

    return forms; 
}); 

我想那是什麼在forms所有的文件有一個新的count屬性,它得到發送給客戶。

但這顯然不起作用。

感謝你的幫助

+0

爲什麼你需要這種情況發生在服務器上?爲什麼不提取客戶端上的所有文檔,然後將該屬性添加到每個文檔? – Rahul 2013-03-19 22:14:06

+2

,因爲可能有成千上萬個。目標是一次只發佈一個頁面,但仍顯示現有文檔的總數。因爲每個用戶根據他們的權限有不同的視圖,所以存儲計數是沒有意義的。因此,如果我要將計數存儲在數據庫中,它會在所有會話中更新。這是錯誤的 – 2013-03-20 16:17:33

回答

2

不知道它會在你的情況下工作,但你可能使用與流星0.5.8

推出了新的轉換採集功能當聲明你的收藏,添加此功能爲第二個參數:

Forms = new Meteor.Collection("forms", { 
    transform: function(f) { 
     f.nbForms = 12; 
     return f; 
    } 
}); 

但是,這將在服務器和客戶端。我不知道是否有方法在發佈上下文中定義轉換函數。

+0

這有幫助,但它不完全是我想要的。 目標是在客戶端擁有不同的對象。問題是我需要爲每個用戶計數,因爲結果取決於權限 – 2013-03-20 16:16:02

+0

@DrGorb爲什麼不將它分成2個子集? – mquandalle 2013-03-20 17:31:44

+0

這將是改變客戶端結果的下一個最好的事情 – 2013-03-21 20:15:39

相關問題