当前位置: 首页 > 知识库问答 >
问题:

检查FiRecovery数据库布尔返回值

夹谷苗宣
2023-03-14

我正在从事一项与react基于本机应用程序的用户管理相关的任务。在他们成功注册为用户后,我添加了一个存储布尔值的数据,并将其命名为emailVerifiedAccount(如果他们成功注册,这是存储的数据,如果他们单击发送给他们的电子邮件验证链接,则表明他们是否为验证用户)。在登录屏幕中,我想检查我在onAuthStateChanged中从firestore获得的布尔值,并且仅当我获得的emailVerifiedAccount返回true时,才将它们引导到索引屏幕。下面的代码已更改为登录屏幕。

    const onAuthStateChanged = (user) => {
        if (user) {
            checkEmailVerifiedAccount=firestoreService.isEmailVerifiedAccount(user);
            try {
                if(checkEmailVerifiedAccount===true){
                    navigation.navigate('Index');
                }else{
                    Alert.alert(
                        "Verify as a Playbookx user",
                        "Please click on email verification link send to your email. If you do not receive any email ,please contact user support",
                        "You may come back to login again after you verified your email",
                        [
                          { text: "OK"}
                        ]
                      )
                }
            } catch (error) {
                console.log(error);
            }
        }
    };

而在firestore.js是所有的代码和函数,是相关的与Fi恢复数据库. isEailVerified帐户是类对象之一,检查验证用户使用电子邮件。

isEmailVerifiedAccount = async (user) => {

return await firestore()
    .collection('users')
    .doc(user)
    .get()
    .then(snapshot => {
        if (snapshot.exists){
            const user=snapshot.data();
            const emailVerifiedAccount={
                emailVerifiedAccount:user.emailVerifiedAccount
            };
            return emailVerifiedAccount
        }
    })
    .catch(error => {
            console.log(error);
    });
};

共有2个答案

喻高寒
2023-03-14
const checkEmailVerifiedAccount = firestoreService.isEmailVerifiedAccount(user);

CheckEmailVerifiedAccount似乎是一个对象,但您正在检查它是否等于true。返回user。emailVerifiedAccount直接从isEmailVerifiedAccount函数中读取,或者像这样读取该属性:

const checkEmailVerifiedAccount = firestoreService.isEmailVerifiedAccount(user);

if(checkEmailVerifiedAccount.emailVerifiedAccount) {
  navigation.navigate('Index');
}
卢英叡
2023-03-14

您的isEmailVerifiedAccount函数是异步的,因此调用它时必须等待结果:

checkEmailVerifiedAccount = await firestoreService.isEmailVerifiedAccount(user);

 类似资料:
  • 所以我有这个方法: 数据库返回null,并将设置为null。 什么是我可以100%避免NPE的万无一失的方法?我知道从这里可以看出,tocasting不是一个保证 更新:在代码中,NPE被抛出。。。这对我来说毫无意义。我预计NPE会被抛出

  • 我是React Native的新手,我正在尝试将第一个查询的数据数组返回到设备屏幕,在那里我可以设置设备。我使用.get()和.then()进行了此工作,但我没有得到更新的事件,所以我已经移动到onSnapshot,似乎在查询端有数据,但无法在屏幕上获得此集合。 出现此错误。如果我删除.then(setDevices),我可以在console.log上看到数据数组 谢谢

  • 这是一个布尔方法,是我作业的一小部分。我想根据输入和记录之间是否匹配来返回true或false。我想我遇到了语法问题。 这是该方法的代码,但始终有红线指示我应该在代码中添加return,否则将该方法更改为void。但我已经在if语句中添加了return true。

  • 实际上,我想向用户显示联机/脱机状态。我读过https://firebase.google.com/docs/firestore/solutions/presence并实现了来更新折扣时的实时数据库,但问题是当用户折扣时,Firestore中的数据不会更新。

  • 除了相等检查,Jasmine还提供了一些方法来检查布尔条件。 以下是帮助我们检查布尔条件的方法。 toBeTruthy() 此布尔匹配器在Jasmine中用于检查结果是等于true还是false。 以下示例将帮助我们理解toBeTruthy()函数的工作原理。 ExpectSpec.js describe("Different Methods of Expect Block",function (

  • 当我想检查可选布尔值是否为真时,这样做行不通: 它会导致以下错误: 可选类型“@IvalueBool?”不能用作布尔值;测试'!=而不是零 我不想检查nil;我想检查返回的值是否为真。 如果布尔值==true,我是否总是必须执行