【问题标题】:Java - How to specify the order that Firestore retrieves field names?Java - 如何指定 Firestore 检索字段名称的顺序?
【发布时间】:2021-07-01 11:39:46
【问题描述】:

我正在尝试从名为“taskboards”的集合下的文档(文档名称是用户 ID)中检索所有字段名称。我希望 Firestore 以特定顺序检索这些字段名称,但我不知道如何。

下面是代码:

userID = fAuth.getCurrentUser().getUid();
DocumentReference userTaskboardRef = fStore.collection("taskboards").document(userID)

userTaskboardRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if(task.isSuccessful()){

            List<String> columnsList = new ArrayList<>();

            Map<String, Object> map = task.getResult().getData();
            for(Map.Entry<String, Object> entry : map.entrySet()){
                columnsList.add(entry.getKey());
                Log.d("TAG", entry.getKey());
                Log.d("TAG", entry.getValue().toString());

            }

例如:

我希望 Firestore 按“待办事项、正在执行、完成”的顺序检索以下字段名称。这是字段名称如何存储在我的 Firestore 中的图片。

上面的代码可以正常工作并检索字段名称,但它按“正在执行、待办事项、已完成”的顺序检索它们。这是显示顺序的 TAG 图片。

我对 Android Studio 还很陌生,有谁能帮帮我吗?是否甚至可以指定检索字段名称的顺序?

【问题讨论】:

    标签: java android firebase google-cloud-firestore


    【解决方案1】:

    文档中字段的顺序未定义,Map 中的条目顺序也是如此。

    您问题中的 Firebase 控制台屏幕截图按字母顺序显示了字段。如果您想在代码中复制它,可以使用 TreeMap 对键进行排序:

    Map<String, Object> map = new TreeMap<>(task.getResult().getData());
    for(Map.Entry<String, Object> entry : map.entrySet()){
        ...
    

    另见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 2020-09-15
      • 2016-10-04
      • 2018-12-27
      • 1970-01-01
      相关资源
      最近更新 更多