gpt4 book ai didi

ios - 在 Firebase 中的对象数组中查找键

转载 作者:行者123 更新时间:2023-11-28 12:35:12 25 4
gpt4 key购买 nike

在我的应用程序中,我需要查找联系人信息数据的功能,以检查用户是否已存在于我的数据库中。由于一个用户可能有多个电子邮件地址,我将此数据存储在一个名为 ContactInfo 的单独类中。

现在我想查询所有对象并检查 中是否包含电子邮件
ContactInfo 中的 emails
数组。因此我使用电子邮件作为 key ,这就是为什么它是 URL 编码的。但是我无法找到实现此目的的正确查询。






联系信息




  • -KYd3pbZ7D--yX6B3HY8


    • 电子邮件


      • john%40gmail%2Ecom: true

      • john%40hotmail%2Ecom: true


    • 名字:约翰

    • 姓氏:Doe


  • -KYdUDoMVOdUmJ4I3jO-


    • 电子邮件


      • jane%40gmail%2Ecom: true


    • 名字:简

    • 姓氏:Doe




基于此,我的数据库的顶层看起来像这样



enter image description here






最佳答案





使用电子邮件地址作为 key 可能不是您想要的。



电子邮件地址会改变并被视为动态数据 - 最好不要使用动态数据(可能会改变的东西)作为键,就好像它确实改变了一样,数据库中引用它的任何地方也必须更新。



一种可能性是存储多封电子邮件:



contactInfo
-KYd3pbZ7D--yX6B3HY8
firstname: "John"
lastname: "Doe"
main_email: "-JYJkjajisaiisd"

然后是所有电子邮件的单独节点。

contact_emails
-JYJkjajisaiisd
email : "john@gmail.com"
uid : "uid_0"
-YJNlkokaosomdo
email : "john@hotmail.com",
uid : "uid_0"
-Juiaisidiasda
email : "frank@fmail.com",
uid : "uid_3"

这种结构是可查询的、可维护的,并且避免了将特殊字符(电子邮件字符)解析/存储为键的担忧。您可以为每个人存储多封电子邮件,您可以通过更新他们的 contactInfo 中的 main_email 节点来更改他们的主要电子邮件

要检查电子邮件,请使用此查询

    contactEmailsRef.queryOrdered(byChild:"email")
.queryEqual(toValue: "john@hotmail.com")
.observeSingleEvent(of: .value, with: { snapshot in

print(snapshot)

})

将导致打印此节点

-YJNlkokaosomdo
email : "john@hotmail.com",
uid : "uid_0"

关于ios - 在 Firebase 中的对象数组中查找键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41085158/

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