我正在查看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原语的值?
答案 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!"