Vergleichen, abfragen und anderes mit Cloud Functions!

Timestamps in Firebase mit rowy

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…
Avatar von manuel

AUTOR

manuel