当前位置: 首页 > 面试题库 >

Firebase查询-我得到某种类型的NSArray作为结果(仅有时)

朱季
2023-03-14
问题内容

所以我有一个像这样的firebase数据库:

userIndexes
-- 1: uid1
-- 2: uid2
-- 3: uid3

我想通过使用键来获取uid。因此,我将这样查询它:

DataService.sharedInstance.DB_REF_USERS_INDEXED_BY_ID.queryOrderedByKey().queryStarting(atValue: "2").queryLimited(toFirst: 1).observeSingleEvent(of: .value, with: { (snapshot) in
     print(snapshot.value)
})

当我使用23作为起点时,会得到此打印(此处为2):

可选({2 = uid2;})

我很容易将其投射到 Dictionary<String, AnyObject>

但是,当我将其1用作起点时,会得到以下信息:

optional(<__ NSArrayM
0x6000000494b0>( ,uid1))如果我尝试将其强制转换为Dictionary,它将得到 nil

这是为什么?


问题答案:

我在论坛上问了同样的问题..

您应该避免在分布式系统中使用数组(特别是数字,顺序ID)。

有关Firebase如何处理类似数组的行为以及为什么应避免使用数组的更多信息:

它在旧的Firebase文档中明确定义了在Firebase中使用数组时发生的情况。检查firebase数据库中的数组

您还可以阅读“ 最佳实践:Firebase中的数组 ..”

如果所有键都是整数,并且0到对象中最大键之间的键中有一半以上具有非空值,则Firebase会将其呈现为数组。



 类似资料:
  • 我试图在firebase中的nodesjs服务器(函数部分)中创建一个查询 当我查询电子邮件->时,我得到了正确的文档 当我查询时间戳->时,我得到了正确的文档 但是...当我查询电子邮件和时间戳->时,我没有得到任何文档... 我对它的理解是,当我执行多个“where”时,这就像是一个逻辑,所以如果我在第一个查询和seconds查询中获得相同的记录,我应该在第三个查询中也获得它们 有什么让我怀念

  • Firebase查询返回此查询的值 该项由model类捕获 但是,返回null

  • 问题内容: 我是Go语言的初学者。我可能认为多年以来其他语言都太传统了,但这就是我想在Go中做的事情。假设以下用例 我有接口I。此接口具有功能start()和stop() 有许多实现接口的结构。结构A,结构B,结构C 当应用程序启动时,我想在结构A,B和C上调用start() 同样,当应用程序终止时,我想在A,B,C结构上调用stop()。 我不想在代码中的任何地方硬编码结构A,B和C来调用启动/

  • 问题内容: 我尝试使用和提取MySQL查询结果,并且将数值作为字符串返回。 有什么方法可以将数据存储为表中的数据类型吗? 该应用程序将查询许多不同的查询,因此我将无法基于1乘1将值强制转换为预期的数据类型。 问题答案: 我不认为可以在PHP 5.2 中以其本机数据类型 (即字符串的其他任何形式) 获取数据… 如果我没记错的话,在PHP 5.3中,当您使用新的 (在PHP > = 5.3中是新的)

  • 在第一个if检查中,我没有得到一个错误,在else检查中,如果我得到 VideoSource仅指一种类型,但在此处用作值。

  • 我正在尝试将预言机结果列表绑定到摘要列表。但是我的摘要列表有3个类被定义为DB的实体 我有三个实体类A,B,C 我使用以下查询获得结果,但结果无法转换为摘要对象 调试:我确保结果列表不为空,如果我不将其转换为对象,下面的查询可以正常工作 我看到的第一种方法是遍历summaryList,并像这样将它们分配给单个列表,我还没有测试过这种方法,但我认为它可能会给出一个类强制转换异常,因为强制转换以前也有