web-dev-qa-db-fra.com

Fonctions Cloud Firebase - Modifier les paramètres de mémoire de stockage

J'utilise Firebase Cloud Function et depuis récemment, les journaux m'indiquent le message suivant:

Le comportement des objets Date stockés dans Firestore va changer ET VOTRE APP PEUT BRISER. Pour masquer cet avertissement et vous assurer que votre application le fait pas casser, vous devez ajouter le code suivant à votre application avant le appeler d'autres méthodes Cloud Firestore:

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

Le problème est que lorsque j'ajoute cette partie de code dans mon fichier de fonctions, j'obtiens cette erreur chaque fois que j'essaie de déployer:

ReferenceError: Firestore is not defined

Quelqu'un peut-il m'aider à trouver ce qui pourrait être faux?

(Dois-je ajouter une dépendance Firestore dans le fichier package.json? Même si ce n'est pas nécessaire alors que j'utilise déjà les fonctionnalités Firestore?)

Je vous remercie

5
Valentin

Cela devrait faire le travail:

const admin = require('firebase-admin');
admin.initializeApp();

const firestore = admin.firestore();

// Add this magical line of code:
firestore.settings({ timestampsInSnapshots: true }); 

Ensuite, dans votre fonction, utilisez directement l'objet Firestore:

firestore.doc(`/mycollection/${id}`).set({ it: 'works' })
4
Yulian

Les conseils que vous obtenez dans les journaux sont destinés aux personnes utilisant directement le SDK du nœud Firestore. Toutefois, lorsque vous écrivez des déclencheurs Firestore via Cloud Functions, le SDK d'administration est automatiquement initialisé, ce qui initialise automatiquement le SDK Firestore. Donc, vous n'avez pas l'occasion de l'initialiser vous-même.

Tant que le SDK Firestore n’est pas entièrement finalisé, vous ne pouvez que vous assurer que votre utilisation des dates est conforme au futur SDK Firestore. Cela signifie que vous devez utiliser des objets Timestamp lors de la lecture de dates d'instantanés. Si vous faites cela, vous pouvez ignorer ce message d'avertissement.

4
Doug Stevenson

Vérifiez comment avez-vous initialisé votre application firebase dans mon cas, je l'ai appelée firebase, donc j'utilise ceci:

const firestore = firebase.firestore();
const settings = {/* your settings... */     timestampsInSnapshots: true};
firestore.settings(settings);
1
vitomadio

C’est la bonne façon de faire dans Firebase Cloud Functions:

import * as admin from 'firebase-admin';


admin.initializeApp();
const settings = { timestampsInSnapshots: true };
admin.firestore().settings(settings);

** Le code ci-dessus est écrit en TypeScript

0
Joel