2012-06-18 3 views
7

Sto usando meteora. Mi chiedo se esiste un modo stenografico per eseguire aggiornamenti in batch prima che il DOM venga aggiornato.Aggiornamento lotto Meteor

per esempio voglio aggiornare alcuni record, più di un (Tutto in una volta):

Collection.update(id1,{..}) 
Collection.update(id2,{..}) 
Collection.update(id3,{..}) 

Il problema è che ci sono 3 articoli che sono aggiornati separatamente. Quindi, quando il DOM nel mio caso veniva ridisegnato 3 volte anziché una volta (con tutti e 3 i record aggiornati).

C'è un modo per bloccare l'aggiornamento dell'interfaccia utente finché tutti non vengono aggiornati?

risposta

-1

Eseguire sul server invece, in modo che venga eseguito in modo sincrono in modo che sia meno probabile che causi più aggiornamenti DOM sul client.

Vedere first two and last interesting code bits, che spiega come proteggere i client dall'incombenza del database e come definire i metodi sul server e chiamarli dal client.

+0

Im ancora sicuro se la sua asincrono ma è già più ottimale per fare così – Akshat

23

L'aggiornamento di Mongo può modificare più di un documento alla volta. Dagli semplicemente un selettore che corrisponda a più di un documento e imposta l'opzione multi. Nel tuo caso, questo è solo un elenco di ID, ma puoi usare qualsiasi selettore.

Collection.update({_id: {$in: [id1, id2, id3]}}, {...}, {multi:true}); 

Questo eseguirà un singolo aggiornamento DB e un singolo aggiornamento.

+4

Supponiamo che v'è una prova di proprietà in ciascuno dei documenti corrispondenti dal selettore mongo sopra e desidero aggiornare prova properrty con diversi valori di ogni documento, è possibile in qualche modo? Il modo in cui capisco la tua risposta sopra è che posso $ impostare qualsiasi singolo campo con un valore statico fisso e tutti i documenti corrispondenti a _id saranno interessati. Ma non ho un valore fisso. – Vinay