- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试通过注册时通过邮件发送的链接来验证我的用户电子邮件地址。当用户注册时,我在临时表中创建对其 uid 的引用,并发送一封包含激活其帐户链接的邮件。此链接调用我的 firebase 云函数,我在其中检查参数中传递的值是否存在于临时表中,如果存在,我激活关联的帐户,然后删除临时表上的记录。
到目前为止我所拥有的:
exports.confirmMail = (data) => {
return admin.database().ref(`/Email-Verifications/${data.uid}`).once('value')
.then((snapshot) => {
let uid = snapshot.val().userId;
return new Promise((resolve, reject) => {
admin.auth().updateUser(uid, { emailVerified : true })
.then(()=>{
admin.database().ref(`/Email-Verifications/${data.uid}`).remove()
.then(()=>{
console.log('email verified');
return 'Ok';
})
.catch(()=>{
console.log(error);
return error;
})
})
})
.catch((error)=>{
console.log(error);
return error;
})
})
.catch((error)=>{
console.log(error);
return error;
})
}
这有效(根据 firebase 控制台中的日志),但在我的前端,我得到一个空对象,因此无法知道该过程是否真正有效。
我对 promise 返回感到困惑,我必须通过 return new Promise (...)
更改 .then 以删除我遇到的“超出最大调用堆栈大小”错误。
在前面我用:
verifMail(uid){
console.log('fetching on uid : ' + uid);
var func = firebase.functions().httpsCallable('confirmMail');
console.log(func);
func({ uid : uid })
.then((responseValue)=> {
console.log(responseValue);
this.setState({ isProcessDone : true});
})
.catch((error) => {
console.error(error);
});
}
最佳答案
尝试像这样更改您的云功能:
exports.confirmMail = (data) => {
return admin.database().ref(`/Email-Verifications/${data.uid}`).once('value')
.then((snapshot) => {
let uid = snapshot.val().userId;
return admin.auth().updateUser(uid, { emailVerified : true })
.then((userRecord)=>{
return admin.database().ref(`/Email-Verifications/${userRecord.uid}`).set(null)
.then(()=>{
console.log('email verified');
return { uid: uid };
})
.catch((error)=>{
console.log(error);
return error;
})
})
})
.catch((error)=>{
console.log(error);
return error;
})
}
最后一个 .then()
的返回结果应包含您想要在前端获取的数据。
但我不确定我是否忘记了任何事情,因为缺少指出我的语法错误的 IDE。
关于node.js - Firebase 功能 : if value exists, 行动然后删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57843126/
在 Catalyst我正在尝试转发一个私有(private)行动来做一些工作。这是函数定义: sub get_form :Private :Args(1) { my ($self, $c, $ty
public class SimpleHTTPRequest { String envelope1="" + ""+ ""+ ""+ "ghjghj"+
我有一些返回 Promise 的 JavaScript 函数。我使用 .then 来处理从这些函数返回的数据。但是,下面的代码是否保证了顺序? result2 会在 result 之后处理吗? con
我有这样的类层次结构 public abstract class CalendarEventBase{} public class TrainingEvent : CalendarEventBase{
我有一个问题:我需要创建一个可以从 javascript 调用的网络服务(在 C# 中),该服务返回一个在(它是一个 excel)中生成的文件,并且在 javascript 中返回一个新文件,打开一个
我正在向我的 UITableViewCell 添加自定义按钮。在该按钮的操作中,我想调用 showAlert: 函数并希望在该方法中传递单元格标签。 如何在 showAlert 方法中传递参数:act
我正在尝试推送到 harbor registry 2.2。它与 ssl 一起工作,并且存储在本地安装的 NFS 共享上。我得到的错误是:未经授权访问存储库:测试/ flask ,操作:推送:未经授权访
我正在尝试推送到 harbor registry 2.2。它与 ssl 一起工作,并且存储在本地安装的 NFS 共享上。我得到的错误是:未经授权访问存储库:测试/ flask ,操作:推送:未经授权访
无论我如何尝试编写 Action 测试,这个错误都会困扰我一段时间,它给了我这个: “操作可能没有未定义的“类型”属性。您是否拼错了常量?操作:{}" 但如果我控制台记录我正在尝试测试的操作,它会打印
我是一名优秀的程序员,十分优秀!