Ich habe eine Art langsame Verbindung zwischen meinem Meteorserver und der entfernten Mongodb-Instanz. Kann ich irgendwie auf eine Client-Seite warten und keine Abonnements registrieren, bis der Server keine Verbindung zu mongo aufgebaut hat?Wie auf der Client-Seite warten, bis die Verbindung zu Mongo auf der Server-Seite bereit ist?
Antwort
Ein primitiver Weg dies zu tun ist auf eine Änderung in Meteor.userId() mit Meteor.autorun zu hören. Wenn Sie in der Lage sind, dies zu erhalten, würden Sie wissen, dass Sie mit MongoDB verbunden sind. Wenn Sie sich nicht mit der Authentifizierung befassen, können Sie auf der Serverseite eine Methode erstellen, die etwas von MongoDB zurückgibt. Wenn etwas zurückgegeben wird, können Sie bei Erfolg auf der Clientseite alle Abonnements starten.
Ja, dies ist der nützlichste und einfachste Weg, dies zu tun. –
Es sollte einen besseren Weg geben, die Mongo-Bereitschaft zu überprüfen, aber ich denke, dass sie momentan nicht auf der Prioritätenliste für Meteor steht. – HGandhi
Die zuverlässigste Methode hierfür ist der Aufruf Meteor.call. Wenn Sie dies als einen synchronen Aufruf (kein Rückruf) tun, wartet der Client, bis der Aufruf abgeschlossen ist. Hier ist, wie es asynchron zu tun:
Meteor.call('isEverythingReady', param1,
function(error, result) {
if (error === undefined) {
Meteor.subscribe("mystuff");
Session.set("sess1", "whatever");
} else {
alert("There was an error during startup.");
}
});
und dann
if (Meteor.isServer) {
Meteor.methods({
isEverythingReady: function(param1) {
// can you connect to database?
return true;
}
}
}
Ich hatte das gleiche Problem bei einem meiner Projekte in Meteor und diese Antwort funktionierte, als ich ihre Dokumente durchging und mir selbst herausfand, wie es geht. Allerdings sollten Sie wahrscheinlich auflisten, wie Sie die Funktionen ausführen (Hinzufügen der Bearbeitung zu Ihrer Antwort) – Charles
Ich bin mir nicht sicher, ob ich Ihren Kommentar verstanden habe - die Callback-Funktion ist im obigen Ausschnitt dargestellt. –
Nun ja, aber die Funktion zu nennen war nicht aufgelistet, wie man es erstellt, als ich das ursprünglich versucht hatte, versuchte ich, eine Standardfunktion x() anstelle einer meteor.methods() zu machen. Und was die Frage im Kommentar angeht, ja, Sie können sich auf diese Weise mit der Datenbank verbinden. – Charles
- 1. Erstellen von Webseiten auf der Serverseite oder der Clientseite?
- 2. Wie werden die Validierungsregeln sowohl auf der Clientseite als auch auf der Serverseite verwendet?
- 3. Paginierung: Serverseite oder Clientseite?
- 4. GAE-authentifizierter Benutzer auf der Serverseite, aber nicht auf der Clientseite
- 5. Kontrollnummer der Verbindungen auf Serverseite
- 6. Reagieren auf der Serverseite
- 7. Wie verwenden Sie einen Rückgabewert von der Serverseite (VB.NET) auf der Clientseite (JavaScript)?
- 8. Alle bis auf die letzte Probe in beobachtbarer Reihenfolge ablegen, bis der Verbraucher bereit ist
- 9. Was kostet TIME_WAIT auf der Serverseite?
- 10. NodeJs Request-Behandlung auf der Serverseite
- 11. Wie bis der Absicht der Ausführung warten ist in android
- 12. In Meteor, wie die Vorlagen auf der Serverseite gerendert werden?
- 13. Warten Sie, bis erfordern bereit ist innerhalb eines Winkels Controller
- 14. Kann Powershell warten, bis IE DOM bereit ist?
- 15. Verschlüsselung vertraulicher Daten auf der Clientseite
- 16. progressive Erweiterung auf der Serverseite?
- 17. Wenn Sie ein Webprojekt starten, ist es besser, mit der Clientseite oder der Serverseite zu beginnen?
- 18. jQuery-Vorlagen auf der Serverseite
- 19. Warten Sie, bis der Prozess beendet ist
- 20. Eingabearten auf der Serverseite steuert
- 21. Warten bis Tomcat fertig ist
- 22. Die beste Methode zum Sortieren der Seitendisposition auf der Clientseite
- 23. Der beste Weg, auf .forEach() zu warten
- 24. Was ist der richtige Weg, auf Verbindungen zu warten?
- 25. Warten bis die Ansicht in der Containeransicht geladen ist?
- 26. Java Warten auf Mysql Verbindung
- 27. Es wird empfohlen, die Web SQL-Datenbank für die Speicherung auf der Clientseite zu verwenden.
- 28. Testen der Flash-Fähigkeit auf der Serverseite
- 29. Anzahl der Ergebnisse in Meteor auf der Serverseite beschränken?
- 30. Portable Art zu warten, bis der Prozess die Datei öffnet?
Sie sollten Ihre Frage bearbeiten, wenn Sie ein Update haben. – knownasilya