gpt4 book ai didi

java - 我如何指向随 secret 钥(firebase 用户 ID)

转载 作者:行者123 更新时间:2023-11-29 18:27:57 28 4
gpt4 key购买 nike

我想根据创建日期和时间从 Firebase 中检索数据我还没有找到任何其他方法,而不是通过使用 orderByChild("Create") 创建每个用户的 child 来保存创建日期和时间排序,但是每个用户都保存一个随机 ID 我怎么能指向排序的 child :

DatabaseReference userref = FirebaseDatabase.getInstance().getReference().child("Connection").child("Admin");
userref.orderByChild("Create");

userref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for (DataSnapshot userSnapshot : dataSnapshot.getChildren()) {

Users users = userSnapshot.getValue(Users.class);
adminsList.add(users);

}
mAdapter = new Adapter_All_Admins(adminsList);
mRecyclerView.addItemDecoration(new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL));
mRecyclerView.setAdapter(mAdapter);


}

}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});


Firebase Users Data Image

最佳答案

您的代码中存在不止一个问题。

I haven't found any other method instead of creating a child of every user to save creation date and time sort by using orderByChild("Create")

这是为每个用户创建单独节点的推荐方法。第一个问题是 Firebase 实时数据库查询是不可变的,这意味着您无法更改现有查询的属性。如果您通过调用 .orderByChild("Create") 方法更改值,它将成为一个新查询。这与 String 的情况完全相同 类。所以要解决这个问题,请链接所有方法调用并将它们存储在单个 Query 对象中:

Query userref = FirebaseDatabase.getInstance().getReference()
.child("Connection")
.child("Admin")
.orderByChild("Create");

或者您可以像这样创建一个新的Query对象:

Query createQuery = userref.orderByChild("Create");
createQuery.addValueEventListener(/* ... */);

第二个问题,要获得相关结果,请注意时间戳应存储为字符串:

Create: "2019/09/11 02.32:54"

因为在这种情况下的顺序是 lexicographically .因此,您绝对应该将它们存储为 ServerValue.TIMESTAMP,如我在以下帖子中的回答中所述:

第三个问题是您数据库中的属性以大写字母开头。如果 Users 类中的字段是小写字母或者即使以大写字母开头,您也可能会收到以下错误:

W/ClassMapper: No setter/field for Create found on class Users

要解决这个问题,您应该使用以下帖子中的答案:

或来自以下帖子:

编辑:

查询时,无需添加uid 0yozyNJzCvTWtRU8ufe5Zx8TPvu1作为child。您应该只获取对 Admin 的引用,然后遍历子项(实际上是用户对象)。当您调用 .orderByChild("Create") 时,您正在将 DatabaseReference 对象转换为 Query 对象,并且您正在根据创建属性。

只有当您想要获得特定用户对象时,您才应该添加对 child("0yozyNJzCvTWtRU8ufe5Zx8TPvu1") 的显式调用,否则您不需要这样做。

or you're .orderByChild() can work for sub child too ??

是的,它会起作用。试一试 ;)

关于java - 我如何指向随 secret 钥(firebase 用户 ID),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57883129/

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