如何直接阅读Firebase
子节点?
我有像Users/userId/deviceId
这样的节点,我希望在注册时直接读取deviceId
。我没有userId
访问deviceId
。
注意:
我不想迭代整个用户节点,因为我知道我可以这样做:
for (DataSnapshot dataSnapshot1:dataSnapshot.getChildren())
{
User user = dataSnapshot1.getValue(User.class);
if (user.getDeviceId().equals(android_id))
{
//alert user
}
}
但我希望像users/userId/deviceId
一样在单行中实现
如果你有更好的方法,可以分享。
答案 0 :(得分:0)
您不能在一行代码中执行此操作。迭代的方式是从数据库获取数据的正确方法。对于Firebase,在getChildren()
对象上使用DataSnapshot
是一种常见做法。
答案 1 :(得分:0)
如果您只有Users/userId/deviceId
,那么如果您知道deviceId
,那么您只有足够的数据可以查找userId
。
如果 想要在不知道userId
的情况下查找设备,则必须向数据库添加更多信息。例如。 Devices/deviceId/...
。使用此附加数据结构,如果您只知道deviceId,则可以查找存储的数据。
这种类型的数据复制在NoSQL数据库中非常非常常见:您为应用程序的用例建模数据。当您添加更多用例时,通常最终会向数据库添加更多数据。这也称为非正规化或扇形展开。
Firebase documentation has a page on this type of data structuring,但我还建议您阅读NoSQL data modeling并观看Firebase for SQL developers。