webentwicklung-frage-antwort-db.com.de

Admin SDK kann keine Einstellungen für Firestore vornehmen

Ich habe diese Warnung kürzlich erhalten:

Das Verhalten für Date-Objekte, die in Firestore gespeichert sind, ändert sich UND IHRE APP KANN BRECHEN . Um diese Warnung auszublenden und sicherzustellen, dass Ihre App nicht beschädigt wird, müssen Sie die .__ hinzufügen. Geben Sie folgenden Code für Ihre App ein, bevor Sie andere Cloud Firestore-Methoden aufrufen:

const firestore = new Firestore();
const settings = {/* your settings... */ timestampsInSnapshots: true};
firestore.settings(settings);

Mit dieser Änderung werden in Cloud Firestore gespeicherte Zeitstempel gelesen zurück als Firebase-Timestamp-Objekte statt als System-Date-Objekte . Daher müssen Sie auch den Code aktualisieren, der stattdessen ein Datum auf .__ erwartet. Erwarte einen Zeitstempel. Zum Beispiel:

// Old:
const date = snapshot.get('created_at');
// New:
const timestamp = snapshot.get('created_at');
const date = timestamp.toDate();

Bitte prüfen Sie alle bestehenden Verwendungen von Date, wenn Sie das neue .__ aktivieren. Verhalten. In einer zukünftigen Version wird das Verhalten in das neue .__ geändert. Verhalten, also wenn Sie diese Schritte nicht befolgen, KANN IHRE APP BREAK.

Ich versuche, die vorgeschlagene Korrektur im Admin-SDK in meinem Cloud Functions-Code zu implementieren, da das meiste, was ich tue, da ist.

Ich habe versucht, admin.firestore().settings({ timestampsInSnapshots: true }) zu verwenden, bekam aber folgende Warnung:

admin.firestore (...). Einstellungen sind keine Funktion

Wie löse ich es?

9
rgoncalv

Ich hatte das gleiche Problem. Ich musste die Firebase-Funktionen und den Firebase-Admin aktualisieren. 

Um ein Upgrade durchzuführen, gehen Sie zu Ihrer CLI und dann 

ProjectDirectory > Functions > npm install [email protected] [email protected] --save

Dann oben, bevor Sie Funktionen auslösen:

const firestore = admin.firestore();
const settings = {timestampsInSnapshots: true};
firestore.settings(settings);
10
Jeff Padgett

Ändern Sie, um den Fehler "Firestore.settings () wurde bereits aufgerufen" zu verhindern

db.settings(settings);

zu

try{ db.settings(settings); }catch(e){}
3
Marcus Rogers

ich habe gelöst mit:

const settings = { timestampsInSnapshots: true };
const db = admin.firestore();
db.settings(settings);
db.collection('any');
0
user8320890