2013-03-19 13 views
5

Vorrei aggiungere una proprietà agli oggetti che vengono pubblicati sul client.modifica raccolta prima della pubblicazione

Il mio pubblicare funzione sembra che

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

mi piacerebbe fare qualcosa di simile

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

    return forms; 
}); 

Quello che vorrei è che tutti i documenti in forms hanno un nuovo attributo count che ottiene inviato al cliente.

Ma questo ovviamente non funziona.

grazie per il vostro aiuto

+0

Perché è necessario che ciò accada sul server? Perché non recuperare tutti i documenti sul client e quindi aggiungere quella proprietà a ciascun documento? – Rahul

+2

perché potrebbero essercene migliaia. L'obiettivo è pubblicare solo una pagina alla volta, ma mostrare ancora il numero totale di documenti esistenti. E non ha senso memorizzare il conteggio perché ogni utente ha una vista diversa in base alle proprie autorizzazioni. Quindi se dovessi memorizzare il conteggio nel database, si aggiornerebbe in tutte le sessioni. Il che è sbagliato –

risposta

2

Non sono sicuro che funzionerà nel tuo caso, ma si potrebbe utilizzare la nuova funzione di raccolta trasformare introdotta con Meteor 0.5.8

Quando si dichiara la vostra collezione, aggiungere questa funzione come il secondo parametro:

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

Ma questo sarà su server e client. Non so se esiste un modo per definire una funzione di trasformazione in un contesto di pubblicazione.

+0

questo aiuta ma non è esattamente quello che vorrei. L'obiettivo è avere un oggetto diverso sul client. Il problema è che ho bisogno di un conteggio per ogni utente in quanto il risultato dipende dal permesso –

+0

@DrGorb E perché non dividerlo in 2 abbonamenti? – mquandalle

+0

che sarebbe la cosa migliore per cambiare il risultato sul client –

Problemi correlati