我在Android应用程序中使用Firebase auth和实时数据库。这是我在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的内置注册UI),它不会在Functions日志中显示错误:
我的问题是,虽然日志中没有错误,并且用户已添加到Firebase身份验证部分,但实时数据库中没有包含包含电子邮件的节点。这个问题非常零散。有时它会将其很好地注册到实时数据库中,但有时它不会(如6月25日的日志)。在Android应用程序中,我尝试在注册后查询用户的数据库节点,以显示他们的电子邮件,但在那里我得到了一个错误(也许这是我的应用程序中的一个错误,但无论如何,上面的代码应该在服务器端运行,电子邮件应该在Firebase实时数据库中)。
我也不知道为什么我在日志中有这些removeUserProfile调用,因为我没有从身份验证数据库或实时数据库中删除任何用户。
实际上,您的两个云函数是用完全相同的事件触发的,即onCreate(user)。因此,它们(几乎)同时被触发,并且您可以在日志中看到这两个调用,这是正常的。
由于您写道“问题非常零散”,可能发生的情况是,新记录首先由initializeUserProfile云函数在${userUid}创建,然后由removeUserProfile云函数删除。
因此,您应该将Remote veUserProfile
Cloud Function的触发器更改为onDelete()
:
exports.removeUserProfile = functions.auth.user().onDelete((user) => {
const userUid = user.uid;
return admin.database().ref(`/profiles/${userUid}`).remove();.
});
这是使用电子邮件密码注册帐户的所有代码,保存验证电子邮件,将用户数据保存到Firestore数据库中。只有Firestore数据库无法运行。 else { Toast.makeText(register.this, “Error ! ” task.getException().getMessage(), Toast.LENGTH_SHORT).show();progressBar.setVisib
问题内容: 检索数据有效,但是我无法将检索到的数据保存到ArrayList中。在“ onDataChanged()”方法之后,ArrayList“配置文件”似乎具有2个值,但在return语句中它具有0个值。 问题答案: 您现在无法返回尚未加载的内容。换句话说,您不能简单地在方法之外返回列表,因为它总是由于该方法的异步行为而引起的。这意味着,当您尝试返回该方法之外的结果时,数据尚未完成从数据库的加
我正在尝试开发一个小型电子商务项目。我有一个篮子和篮子项目实体。我只是想当我为客户保存购物篮时,我想把购物篮项目保存在数据库中。我认为我不应该为篮子项目创建存储库。我应该能够保存篮子项目,同时使用篮子存储库保存篮子。 在这里,我试图通过篮子服务获得一个篮子项目,并将其设置为篮子实体并保存它。 我有什么问题?我有个例外。
问题内容: 我遇到了使用EntityManager将元素持久保存到数据库的问题。根据我发现的答案,我在DaoJpa中尝试了这4种方法来执行此操作,但仍然失败。在这里,我附上了我尝试过的四种方法: 控制器部分中的代码: 1.道霸: 不起作用! 2。 我得到的例外:没有交易在进行中 3。 我得到的异常:不允许在共享的EntityManager上创建事务-使用Spring事务或EJB CMT代替 4。
问题内容: 我遇到了使用EntityManager将元素持久保存到数据库的问题。根据我发现的答案,我在DaoJpa中尝试了这4种方法来执行此操作,但仍然失败。在这里,我附上了我尝试过的四种方法: 控制器部分中的代码: 1.道霸: 不起作用! 2。 我得到的例外:没有正在进行的交易 3。 我得到的异常:不允许在共享的EntityManager上创建事务-使用Spring事务或EJB CMT代替 4。
刀 服务