97 votes

Comment obtenir le timestamp du serveur dans les fonctions Cloud pour Firebase ?

Je sais que vous pouvez obtenir le timestamp du serveur dans le web, iOS et Android - mais qu'en est-il des nouvelles Cloud Functions pour Firebase ? Je n'arrive pas à savoir comment obtenir le timestamp du serveur là-bas ? Le cas d'utilisation est que je veux horodater un e-mail à son arrivée.

Sur le web, c'est Firebase.database.ServerValue.TIMESTAMP

Mais cela ne semble pas être disponible dans l'interface du serveur de nœuds de fonctions ?

Je pense qu'il est tard et que je peux manquer le point ici...

EDIT

Je m'initialise comme ceci

admin.initializeApp(functions.config().firebase);
const fb = admin.database()

Ensuite, il est appelé comme ça..

Firebase.database.ServerValue.TIMESTAMP

Mais, cela vient d'une intégration côté client. Dans Functions, Firebase n'est pas initialisé de cette manière. J'ai essayé

admin.database().ServerValue.TIMESTAMP

et

fb.ServerValue.TIMESTAMP

0 votes

Autant que je sache, ServerValue.TIMESTAMP est également disponible dans les fonctions Cloud pour Firebase. Pouvez-vous partager le code minimal qui reproduit le problème ?

0 votes

Salut @FrankvanPuffelen - J'ai modifié l'original avec un exemple de mon initialisation et ce qui ne fonctionne pas.

9voto

ked Points 273

En utilisant la fonction cloud suivante qui est équivalente à Timestamp.now() côté client, cela retourne l'horodatage actuel

admin.firestore.Timestamp.now()

Mais si vous souhaitez initialiser Timestamp à partir de l'objet Date, vous pouvez le faire comme suit

admin.firestore.Timestamp.fromDate(new Date())

Et si vous souhaitez initialiser Timestamp pour une date future ou passée, commencez d'abord par initialiser l'objet Date soit en analysant une chaîne soit en définissant l'heure que vous souhaitez définir, puis passez-le à Timestamp.fromDate()

var date = new Date('mercredi 30 octobre 2019 21:10')
//ou date = new Date('2014-06-30T06:40:53+05:30')
var timestamp = admin.firestore.Timestamp.fromDate(date)

2voto

nilloc Points 591

C'est dans la documentation du 16 août 2020.

https://cloud.google.com/firestore/docs/manage-data/add-data#server_timestamp

// Obtenir l'objet `FieldValue`
const FieldValue = admin.firestore.FieldValue;

// Créer une référence de document
const docRef = db.collection('objects').doc('some-id');

// Mettre à jour le champ de timestamp avec la valeur du serveur
const res = await docRef.update({
  timestamp: FieldValue.serverTimestamp()
});

Voici comment je l'ai utilisé dans mon code:

const createUserDoc = (user) => {
    const FieldValue = admin.firestore.FieldValue
    return db.collection('users').doc(user.uid).set({
        memberSince: FieldValue.serverTimestamp(),
    })
}

1voto

Shiva Yadav Points 111

Vous pouvez essayer:

const horodatage = admin.firestore.Timestamp.now();

-3voto

Gene Points 398
console.log("Afficher l'horodatage actuel, en millisecondes= " + Date.now());

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X