[英]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.