import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
export default functions.auth.user().onCreate(saveUserToDatabase);
async function saveUserToDatabase(event) {
const Users = admin.database().ref('Users');
const authUser = event.data;
let user = await Users.child(authUser.uid).set({
createdAt: authUser.metadata.createdAt.toString(),
email: authUser.email,
facebookId: authUser.providerData[0].uid.replace('http://facebook.com/', ''),
lastSignedInAt: authUser.metadata.lastSignedInAt.toString(),
name: authUser.displayName,
photoUrl: authUser.photoURL,
});
console.log('saveUserToDatabase()');
console.log(authUser);
}
Im obigen Code speichere ich einen Benutzer in der Firebase-Datenbank, wenn sie sich registrieren. Jetzt, außer ich verwende die toString
Methode an den Daten, die sie nicht speichern. Ich habe das ein wenig weiter untersucht und festgestellt, dass die Daten nicht als Strings eingehen und das einige Probleme verursacht. (Ich tat dies mit console.log und Überprüfung der Feuerbasis Armaturenbrett)Cloud-Funktionen für Firebase onCreate() -Daten nicht korrekt formatiert
{ displayName: 'Test User',
email: '[email protected]',
metadata:
{ createdAt: 2017-05-02T05:18:45.000Z,
lastSignedInAt: 2017-05-02T05:18:45.000Z }
}
Wenn ich die toString-Methode verwenden, obwohl es wandelt die Ausgabe an:
"Tue May 02 2017 05:24:31 GMT+0000 (UTC)"
Daten in einigen Fällen auch in dieser gespeichert werden Format:
"1492213242000"
- Warum gibt es so viele Zeitstempel-Formate?
- Was ist das bevorzugte Timestamp-Format für Firebase sollte ich verwenden?
- Wie konvertiere ich die Daten in den bevorzugten Zeitstempel mit Cloud-Funktionen?
Ihr Leben wird stark vereinfacht, wenn Sie nur "Epoch Times" -Darstellung verwenden, die die Anzahl der Sekunden (oder Millisekunden) seit dem 1. Januar 1970 ist. Alles andere wird Ihnen Probleme verursachen, außer Sie haben ein besonderes Bedürfnis. –