Я использую аутентификацию Firebase и базу данных в реальном времени в своем приложении для Android.Это код, который я использую в функциях Firebase, чтобы сохранить электронную почту пользователя в базе данных в реальном времени, когда он регистрируется в приложении с электронной почтой:
'use strict';
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.initializeUserProfile = functions.auth.user().onCreate(user => {
const userUid = user.uid;
return admin.auth().getUser(userUid).then(userRecord => {
const userProfile = {
email: userRecord.email
};
return admin.database().ref(`/profiles/${userUid}`).set(userProfile);
}).catch(error => {
console.log("Error fetching user data: ", error);
});
});
exports.removeUserProfile = functions.auth.user().onCreate(user => {
const userUid = user.uid;
return admin.database().ref(`/profiles/${userUid}`).remove();
});
Когда я регистрирую пользователя в приложении для Android (я используювстроенный пользовательский интерфейс регистрации для Firebase), он не выдает ошибку в журналах функций:
Моя проблема в том, что, хотя у меня нетошибка в журнале, и пользователь был добавлен в раздел Аутентификация Firebase, база данных реального времени не содержит узла с электронной почтой.Проблема очень спорадическая.Иногда он прекрасно регистрирует его в базе данных реального времени, но иногда нет (как в журнале от 25 июня).В приложении Android я пытаюсь запросить узел базы данных пользователя после регистрации, чтобы отобразить их электронную почту, и там я получаю сообщение об ошибке (возможно, это ошибка в моем приложении, но в любом случае этот код должен выполняться на стороне сервера иэлектронная почта должна быть в базе данных Firebase Realtime).
Чего я также не знаю, так это того, почему у меня есть эти removeUserProfile
вызовы в журнале, поскольку я не удалил ни одного пользователя из базы данных аутентификации.или из базы данных в реальном времени.