gpt4 book ai didi

node.js - Firebase 功能 : if value exists, 行动然后删除

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:08 25 4
gpt4 key购买 nike

我正在尝试通过注册时通过邮件发送的链接来验证我的用户电子邮件地址。当用户注册时,我在临时表中创建对其 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com