使用浅层数据的Firebase REST API

时间:2016-01-04 22:32:42

标签: json api rest firebase

我正在查看Firebase REST API的文档,并说明

  

浅 - 这是一项高级功能,旨在帮助您处理大型数据集而无需下载所有内容。将其设置为true可限制在某个位置返回的数据的深度。如果该位置的数据是JSON原语(字符串,数字或布尔值),则只返回其值。如果该位置的数据快照是JSON对象,则每个键的值将被截断为true。

然而,根据我的发现,似乎总是将值设置为true,无论它是JSON原语还是对象?

例如,根据我的阅读,我希望下面的电话

https://samplechat.firebaseio-demo.com/message_list/-K6ojd3dJQ3AVi36cruT/.json?print=pretty&shallow=true返回

{
    "text" : "Ahoy!",
    "user_id" : "jack"
}

而是返回

{
    "text" : true,
    "user_id" : true
}

我理解在这个例子中我提供了浅薄的不需要,因为它是最低级别,但是我发现这个问题也是我自己的数据在更高级别,一切都恢复正常。

有没有办法使用浅层参数返回JSON原语的值?

1 个答案:

答案 0 :(得分:3)

当您使用shallow=true查询Firebase REST API时,对于您查询的级别上存在的任何密钥,它将返回true,无论其下面的数据类型如何。没有办法改变这种行为。

当您深入查询一个级别时,将应用有关原始值的文档。在您的情况下,如果您运行此查询:https://samplechat.firebaseio-demo.com/message_list/-K6ojd3dJQ3AVi36cruT/text.json?print=pretty&shallow=true,则会返回"Ahoy!"

所以:

  • https://samplechat.firebaseio-demo.com/message_list/-K6ojd3dJQ3AVi36cruT/.json?print=pretty

    {
      "text" : "Ahoy!",
      "user_id" : "jack"
    }
    
  • https://samplechat.firebaseio-demo.com/message_list/-K6ojd3dJQ3AVi36cruT/.json?print=pretty&shallow=true

    {
      "text" : true,
      "user_id" : true
    }
    
  • https://samplechat.firebaseio-demo.com/message_list/-K6ojd3dJQ3AVi36cruT/text.json?print=pretty&shallow=true

    "Ahoy!"