簡體   English   中英

從 Cloud Firestore 檢索數據

[英]retrieving data from cloud firestore

您好,我正在嘗試根據字符串查詢從集合中的雲 Firestore 文檔中檢索值以過濾鍵,但似乎無法在線找到任何幫助。 請協助或指導現有解決方案。 謝謝。 這也在 java 中。

  • 我還沒有嘗試過任何東西,因為我不太確定是什么功能提供了這個

我正在嘗試使用這個 function 中的密鑰過濾一個名為 food emissions 的集合

更新

我從 firestore 集合中檢索數據並將其存儲在名為 food data 的 hashmap 中。 我現在嘗試根據存儲在變量鍵中的字符串過濾此 hashmap,並將匹配的值分配給變量 co2EqTemp。 然而,當我為存儲在 co2EqTemp 中的值干杯時,它只是說它引用了一個 null 值

        private void addMeal() {
            mealname =  mealName.getText().toString();
            if(mealname.isEmpty()){
                mealName.setError("Please name your meal!");
                mealName.requestFocus();
                return;
            }

            String UserID = FirebaseAuth.getInstance().getCurrentUser().getUid();
            FirebaseDatabase fDatabase = FirebaseDatabase.getInstance();
            fDbRef = fDatabase.getReference("MealLists");

            for(Map.Entry<String,Double> entry: food.entrySet()){

                key = entry.getKey();
                values = entry.getValue();

                foodAmount = values.toString();
                mealData meals = new mealData(key, UserID, foodAmount);
                fDbRef.child(mealname).setValue(meals);


                makeToast(mealname);
                 foodRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                        if(task.isSuccessful()){
                            Map<String, Object> map = task.getResult().getData();
                            for(Map.Entry<String, Object> entry : map.entrySet()){
                                foodData.put(entry.getKey(),entry.getValue());
                            }
                            for(Map.Entry<String, Object> entry: foodData.entrySet()){
                                if (entry.getKey().equals(key)){
                                    Co2eqTemp = (Double) entry.getValue();
                                }
                                Co2eq = Co2eq + Co2eqTemp;
                            }

                        }
                    }

                });


            }
            storeMeal();
        }
    });

好的,所以我通過完全避免 hashmap 並像這樣過濾從集合返回的數據來解決這個問題。

   public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                        if(task.isSuccessful()){
                            Map<String, Object> map = task.getResult().getData();
                            for(Map.Entry<String, Object> entry : map.entrySet()){
                                if(entry.getKey().equals(key)) {
                                    Double co2 = Double.parseDouble(entry.getValue().toString());
                                    Co2eqTemp = co2 * values;
                                }
                                Co2eq = Co2eq + Co2eqTemp;
                            }
                           
                       }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM