Vergleichen, abfragen und anderes mit Cloud Functions!

Timestamps in Firebase mit rowy

FlutterFlow / Rowy 8. 11. 2022

Googles NoSQL-Datenbank „Firebase“ speichert ein Datum als „Timestamp“ ab. Hier eine kurze Anleitung, wie man diese in Rowy – einem LowCode-Tool für die Erstellung von CloudFunctions am Firebase-Server – verwendet.

Was ist der Firebase-Timestamp?

Ein Firebase-Timestamp stellt einen konkreten Zeitpunkt dar, der unabhängig von einer Zeitzone oder einem Kalender ist. Er wird als Sekunden und Sekundenbruchteile mit einer Auflösung von Nanosekunden in UTC-Epochenzeit dargestellt. Er wird mit dem Proleptischen Gregorianischen Kalender kodiert, der den Gregorianischen Kalender rückwärts bis zum Jahr eins verlängert. Wie er genau aussieht, versteckt die Firebase-Obefläche vor einem, da es direkt als Datum angezeigt wird:

Abfrage, ob ein Timestamp-Feld leer ist

Dies geht ganz einfach mit einer Boolean-Abfrage:

if (!row.answer_time) {

Timestamp-Feld vergleichen

Um das aktuelle Datum mit einem Datum in einem Feld zu vergleichen, kann man bspw. folgende Logik verwenden:

if (row.valid_until.toDate()<Date.now()) {

Um also einen Timestamp in ein Date umzuwandeln, kann man die toDate()-Methode verwenden.

Timestamp-Feld in formatierten String

Mit diesen Varianten kann man den Timestamp in verschiedene Zeichenketten umwandeln:

const date = row.valid_until.toDate().toDateString()
//Beispiel: Friday Nov 09 2022

const date = row.valid_until.toDate().toLocaleDateString('de-DE')
//Beispiel: 09.11.2022

Oder nur die Uhrzeit:

const time = row.valid_until.toDate().toLocaleTimeString('de-DE')
//Beispiel: 13:10:18

Ich hoffe, die wichtigsten Timestamp-Infos habe ich hiermit abgedeckt.

Verwenden des aktuellen Timestamps in einem Derivative-Field

Wenn man beispielsweise mitprotokollieren möchte, wann ein konkretes Feld geändert wurde, kann ein Derivative-Field mit demjenigen Feld als Trigger erstellen und einfach einen Timestamp zurückgeben. Dazu muss man firestore importieren, was man in Rowy nicht außerhalb der Funktion machen kann. Folgendes funktioniert aber einwandfrei:

  
const date = new Date()
  const ms = date.getTime()
  const { Timestamp } = 
(await (async () => await import("@google-cloud/firestore"))())
  return Timestamp.fromMillis(ms)

Quelle

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (1)
Loading...
Beitrag drucken

Autor

Manuel

Ich bin Manuel Wurm, IT-Consultant und Blogger. Ich mag es, verschiedenste Dinge auszuprobieren. Vor allem mit Retro-Computern, Bierbrauen, Bogenschießen und Schlagzeug spielen verbringe ich gerne meine Zeit. Kochen zählt zu meinen größten Hobbys - das spiegelt sich auch auf wurmweb.at wieder, wo ich gerne Rezepte teile und hilfreiche Tipps für Interessierte festhalte.