I in Meteor.users System definiert Sammlung das Profil Feld bin mit Informationen über die letzte Nachricht Benutzer auf jedem Kommunikationskanal mit der folgenden Struktur zu lesen, zu speichern:Wie auf Meteor.users warten, wenn Profilfeld Ändern
profile : {
lastMsgRead : [
{channelId: 'YYEBNEI7894K', messageCreatedAt: '14578970667"}
{channelId: 'GERYUE789774', messageCreatedAt: '14578999845"}
]
}
Ich entdeckte, dass das Lesen von lastMsgRead-Feld fehlschlägt, weil auf dem Client das Array zum Zeitpunkt des Lesens noch leer ist. ich richtig dieses Feld an den Client über veröffentlichen:
Meteor.publish(null, function() {
return Meteor.users.find({}, {fields: {_id: 1, username: 1, emails: 1, profile :1}});
und ich seinen Wert von einer Client-Bibliothek lesen im lib-Verzeichnis befinden, auf diese Weise:
var chHistory = Meteor.user().profile.lastMsgRead;
mein Code debuggen es sieht aus wie Die Änderungen, die ich an dem Profilfeld vorgenommen habe, wurden zum Zeitpunkt des Lesens nicht an alle Clients weitergegeben. Also muss ich auf das Abonnement warten Meteor.users wird fertig, aber ich habe kein Handle ─ Sie bekommen dies automatisch aus dem Framework.
Wie kann ich warten, bis das Meteor.users-Abonnement fertig ist?
Würde eine Antwort auf Ihr spezifisches Problem (stellen Sie sicher, dass das Unterfeld ausgefüllt ist, bevor Sie damit arbeiten) passen Sie? Ich bin mir nicht sicher, ob Ihre aktuelle Frage (ob ein unbenanntes Abonnement bereit ist) mit etwas anderem zu verantworten ist als "Meteor bietet derzeit keine solche Funktion". –