Wie bekomme ich die server-timestamp in Cloud-Funktionen für die FB?
Ich weiß, Sie können ziehen Sie die server-timestamp in web -, ios-und android - aber was ist mit den neuen Cloud-Funktionen für die FB? Ich kann nicht herausfinden, wie man die server-timestamp gibt es? Use-case ist, dass er mich wollte Zeitstempels eine E-Mail, wenn es ankommt.
Auf web-es ist der Feuerstellung.Datenbank.ServerValue.TIMESTAMP
Aber das scheint nicht verfügbar zu sein in den Funktionen Knoten-server-Schnittstelle?
Ich denke, es ist spät und ich möglicherweise fehlt der Punkt hier...
BEARBEITEN
Ich bin initialisieren, wie dies
admin.initializeApp(functions.config().firebase);
const fb = admin.database()
Dann wird es so aufgerufen..
Firebase.database.ServerValue.TIMESTAMP
Aber, dass ist von eine client-seitige integration. Auf Funktionen, die FB ist nicht initialisiert, wie dies. Ich habe versucht
admin.database().ServerValue.TIMESTAMP
und
fb.ServerValue.TIMESTAMP
- Soweit ich weiß
ServerValue.TIMESTAMP
ist ebenso in Cloud-Funktionen für die FB. Kannst du die minimal-code, der das problem reproduziert? - Hi @FrankvanPuffelen - ich bearbeitet habe, die original mit einem Beispiel aus meiner Initialisierung und was nicht funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da bist du ja schon mit dem admin-SDK, die korrekte syntax ist:
Wenn Sie die FB-Admin-SDK, ist hier die richtige syntax (Überprüft 2017-12-07):
Ich bin neu node.js mich, aber Datum.jetzt() funktioniert in meinen tests.
Bearbeiten
Ich Sie falsch verstanden Frage-wusste nicht, Sie wollte timestamp-Daten, die Sie speichern wurden in der FB Datenbank. Ich dachte, Sie wollte einfach nur, um die Zeit auf dem server ausgeführt wurde, Ihre cloud-Funktion. Wenn Sie möchten, Zeitstempel einer empfangenen E-Mails gespeichert, die in der FB-Datenbank, dann mit
admin.database.ServerValue.TIMESTAMP
ist ohne Frage der beste Ansatz.Nur für meine eigene Ausbildung, schrieb ich die folgende Funktion, um zu sehen, wie die Zeiten vergleichen. Ich würde erwarten, dass die Zeiten der cloud-Funktion und Datenbank-server sind synchronisiert, um eine sehr präzise Zeit-Referenz. Wenn ich diese Funktion ausführen, die Datenbank timestamp in der Regel innerhalb von hundert Millisekunden des
Date.now()
Wert. Die Datenbank timestamp ein wenig später zumutbar ist, gegeben, dass der cloud-Funktion einige Zeit, die Verbindung mit der Datenbank her und führen Sie das schreiben.Date.now()
ist die Zeit auf dem server mit Ihrer cloud-Funktion. Es ist völlig unabhängig von der Zeit, die auf jedem client-computer.this == now
(Bolt)Genau zu klären, für zukünftige Leser:
admin.database.ServerValue.TIMESTAMP
gibt einenon-null Object
und ist ein Platzhalter-Wert für auto-populating den aktuellen timestamp. Es enthält nicht den aktuellen timestamp. Die Datenbank wird ersetzen Sie diese Platzhalter, wenn es den Befehl auszuführen.Wenn Sie es in einem
database.ref
dann funktioniert es genauso, wie Sie erwarten, und ist die bevorzugte Methode zur Eingabe eines Zeitstempels :Aber wenn Sie versuchen, verwenden Sie es außerhalb der Funktion in der Datenbank (zum Beispiel zurückzukehren, die Zeit jetzt, oder machen einige Berechnungen) es gibt ein Objekt zurück, dass Sie es nicht verwenden können:
Sehen Sie mehr darüber in FB.Datenbank.ServerValue und in diesem ALSO Frage.
Date.now()
funktioniert Prima, die außerhalb einesdatabase
Funktion, wenn Sie es verwenden möchten, für die eine Berechnung oder sonstige Allgemeine Verwendung.Beide sind mit
unix time
die Anzahl der Sekunden, die vergangen sind, seit 00:00:00 UTC (Coordinated Universal Time), Donnerstag, 1. Januar 1970, und es ist egal, von der Zeitzone. Es ist die Nummer, die auf client-und auf server - (...oder fast:-). Sehen unix-Zeit .