gpt4 book ai didi

java - 如何将 Firebase 的 ServerValue.TIMESTAMP 用作子项并为其设置值

转载 作者:行者123 更新时间:2023-11-29 04:24:09 25 4
gpt4 key购买 nike

我想创建一个类似

的结构
"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> map 而不是时间戳的 Map。

但是我怎样才能以这种方式存储 ServerValue 并为其设置一个值呢?

最佳答案

这不是 ServerValue.TIMESTAMP 的用途。

child() 接受一个字符串,其中包含您要访问的 child 的名字。这是数据库中节点的名称。它只能作为字符串引用,即使它被格式化为数字。

ServerValue.TIMESTAMP 是一个特殊的(映射)值,您可以在节点内添加或更新子数据时使用它来插入服务器的当前时间感。 它不能用于节点本身的名称。

如果您想创建一个基于某个时间的数据库位置,您需要在开始访问它之前知道那个时间。 ServerValue.TIMESTAMP 不会帮你解决这个问题,因为它只在服务器上生成。

如果你想添加按时间排序的数据,你应该改为将数据 push() 到数据库中。 push id是基于时间的,但它是客户端的时间感,而不是服务端。

如果你真的需要在节点名称中使用服务器的时间感,你应该改为使用 Cloud Functions for Firebase测量 Google 服务器上的时间并生成您要写入的路径。

关于java - 如何将 Firebase 的 ServerValue.TIMESTAMP 用作子项并为其设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47274974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com