firebase
google-cloud-firestore
Nimer Farahty
quelle
quelle
Da ich das dueDate
Feld im Cloud Firestore als "Zeitstempel" (und NICHT als Zeichenfolge oder Nummer ) gespeichert habe , habe ich dies getan, um die Rechnungsdokumente mit einem Fälligkeitsdatum für 2017 zu erhalten:
let start = new Date('2017-01-01');
let end = new Date('2018-01-01');
this.afs.collection('invoices', ref => ref
.where('dueDate', '>', start)
.where('dueDate', '<', end)
);
HINWEIS: Das dueDate
Feld wurde in der Firebase mit einem Date () -Objekt gespeichert. z.B:this.doc.dueDate = new Date('2017-12-25')
.where('team_id', '==', teamId).where('time', '>=', start).where('time', '<=', end)
Sie können das datetime-Objekt als Unix-Zeit speichern (Sekunden seit dem 1. Januar 1970). Dann können Sie einfach die where select wie folgt verwenden:
collectionRef.where("startTime", ">=", "1506816000").where("startTime", "<=", "1507593600")
Übrigens: Um in Ihrer App von Datum / Uhrzeit in Unix-Zeit zu konvertieren, können Sie den hervorragenden Moment der Bibliothek nutzen (wenn Sie etwas mit js oder node erstellen).
quelle
var startfulldate = admin.firestore.Timestamp.fromDate(new Date(1556062581000)); db.collection('mycollection') .where('start_time', '<=', startfulldate) .get() .then(snapshot => { var jsonvalue: any[] = []; snapshot.forEach(docs => { jsonvalue.push(docs.data()) }) res.send(jsonvalue); return; }).catch( error => { res.status(500).send(error) });
quelle
quelle
Für alle, die kürzlich Firbase Firestore verwenden. Abhängig von Ihren Einstellungen für Ihre Firebase-Implementierung (je nach Firebase-Version) gibt es Unterschiede.
Vorher spart Fires
Timestamp
alsDate
jedoch wie beschrieben in der Dokumentation hier wird die bald durch ein ersetzt werdenTimestamp
Objekt. Die Timestamp-Dokumente finden Sie hier .Sie können Ihre Implementierung bereits erzwingen, indem Sie eine Einstellung in Ihren Code einfügen , um Firebase zu zwingen, Zeitstempelobjekte anstelle von Datum zu verwenden, wie in diesem Beispiel:
quelle
Diejenigen, die wie ich PHP verwenden, um auf Firestore zuzugreifen, können Folgendes tun:
Genießen.
quelle
Die Lösung besteht darin, Date.now () zu verwenden und die Verwendung des Zeitstempeldienstes von Firebase zu beenden. Sie müssen mit dem numerischen Wert der Zeit in Millisekunden arbeiten, z. B.: 1514271367000, stattdessen, wenn der Firestore den 26.12.2017 verwendet. 1:56: 07 GMT-0500 (-05) funktioniert nicht. Ein Beispiel für eine Abfrage ist:
this.fsService.afs.collection('chats/4bY1ZpOr1TPq8bFQ3bjS/finance/123+finance/12345' , ref => ref.orderBy('hour').startAt(1514184967000).endAt(1514271367000)) .valueChanges().subscribe(data =>{ this.mensajes = data; })
quelle
startAt
undendAt
), nicht Firestore-Code (der verwendet werden würdewhere
, siehe hier ). Die beiden sind ähnlich, aber nicht gleich.In einer Frontend-Anwendung können Firebase-Zeitstempel und -Daten auf diese Weise zum Abfragen und Speichern von Dokumenten verwendet werden.
quelle
Allgemeine Funktion zum Suchen von Dokumenten in einer Sammlung nach Datumsbereich von Spezifikationsfeldern:
Pakete:
quelle