Sto utilizzando il campo del profilo nel sistema di raccolta Meteor.users definito per memorizzare le informazioni su l'ultimo utente messaggio letto su tutti i canali di comunicazione con la seguente struttura:Come aspettare Meteor.users quando si cambia profilo campo
profile : {
lastMsgRead : [
{channelId: 'YYEBNEI7894K', messageCreatedAt: '14578970667"}
{channelId: 'GERYUE789774', messageCreatedAt: '14578999845"}
]
}
Ho scoperto che la lettura del campo lastMsgRead fallisce a causa del fatto che sul client la matrice è ancora vuota al momento della lettura. Ho correttamente pubblicare questo campo per il cliente attraverso:
Meteor.publish(null, function() {
return Meteor.users.find({}, {fields: {_id: 1, username: 1, emails: 1, profile :1}});
e ho letto il suo valore da una libreria client si trova nella directory lib, in questo modo:
var chHistory = Meteor.user().profile.lastMsgRead;
Debug mio codice sembra le modifiche apportate al campo del profilo non sono state propagate a tutti i client nel momento in cui li ho letti. Quindi ho bisogno di aspettare che la sottoscrizione di Meteor.users sia pronta, ma non ho il suo handle ─ l'hai ottenuta automaticamente dal framework.
Come posso aspettare che l'abbonamento a Meteor.users sia pronto?
Una risposta che risolva il problema specifico (assicurandoti che il sottocampo venga compilato prima di utilizzarlo) ti soddisfa? Non sono sicuro che la tua domanda corrente (assicurandoti che un abbonamento senza nome sia pronto) è responsabile di qualcos'altro oltre a "Meteor non fornisce attualmente tale funzione". –