2013-03-19 12 views
5

Ich möchte eine Eigenschaft zu den Objekten hinzufügen, die auf dem Client veröffentlicht werden.Änderung der Sammlung vor der Veröffentlichung

mein Aussehen veröffentlichen Funktion wie die

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

Ich möchte so etwas wie dieses

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

    return forms; 
}); 

tun, was ich möchte, ist, dass alle Dokumente in forms haben ein neues count Attribut, das bekommt an den Kunden gesendet.

Aber das funktioniert offensichtlich nicht.

danken Ihnen für Ihre Hilfe

+0

Warum brauchen Sie das auf dem Server geschehen? Warum holen Sie nicht alle Dokumente auf den Client und fügen diese Eigenschaft dann jedem Dokument hinzu? – Rahul

+2

weil es Tausende von ihnen geben könnte. Das Ziel besteht darin, jeweils nur eine Seite zu veröffentlichen, aber immer noch die Gesamtzahl der vorhandenen Dokumente anzuzeigen. Und es macht keinen Sinn, die Zählung zu speichern, da jeder Benutzer eine andere Ansicht entsprechend seinen Berechtigungen hat. Wenn ich also die Anzahl in der Datenbank speichern würde, würde sie in allen Sitzungen aktualisiert werden. Was ist falsch –

Antwort

2

nicht sicher, dass es in Ihrem Fall arbeiten, aber Sie können die neue Kollektion Transformationsfunktion eingeführt mit Meteor 0.5.8

Bei der Deklaration Ihrer Sammlung, fügen Sie diese Funktion als die verwenden zweiter Parameter:

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

Aber das wird auf Server und Client sein. Ich weiß nicht, ob es eine Möglichkeit gibt, eine Transformationsfunktion in einem Veröffentlichungskontext zu definieren.

+0

das hilft, aber es ist nicht genau das, was ich möchte. Ziel ist es, ein anderes Objekt auf dem Client zu haben. Das Problem ist, dass ich eine Zählung für jeden Benutzer benötige, da das Ergebnis von der Berechtigung abhängig ist. –

+0

@DrGorb Und warum nicht in 2 Subscriptions aufteilen? – mquandalle

+0

das wäre die nächste beste Sache, um das Ergebnis auf dem Client zu ändern –

Verwandte Themen