我想创建一个像
这样的结构"child1/1510612788766/": key: "quantity", value: 10
"child1/1510612788767/": key: "quantity", value: 4
"child1/1510612788768/": key: "quantity", value: 1
"child2/1510612788710/": key: "quantity", value: 6
"child2/1510612788756/": key: "quantity", value: 8
但是当我尝试时:
ref.child("child1").child(ServerValue.TIMESTAMP);
第二次子呼叫出现编译错误:
Error:(59, 52) error: incompatible types: Map<String,String> cannot be converted to String
我知道这个错误是因为该方法需要Map<String, Object>
地图而不是时间戳地图。
但是我如何以这种方式存储ServerValue并为其设置值?
答案 0 :(得分:3)
这不是ServerValue.TIMESTAMP
的用法。
child()
获取一个String,其中包含您要访问的子项的名称。这是数据库中节点的名称。它只能作为字符串引用,即使它被格式化为数字。
ServerValue.TIMESTAMP
是一个特殊的(Map)值,您可以在要添加或更新节点内的子数据时插入服务器的当前时间感。 它不能用于节点本身的名称。
如果要基于某个时间创建数据库的位置,则需要在开始访问之前知道该时间。 ServerValue.TIMESTAMP
无法帮助您,因为它只是在服务器上生成的。
如果要添加按时间排序的数据,则应该将数据推送到数据库中。推送ID基于时间,但它是客户的时间感,而不是服务器。
如果你真的需要在节点名称中使用服务器的时间感,你应该使用Cloud Functions for Firebase来测量Google服务器上的时间并生成你想要写的路径