snapshot.getChildren()打印值,而getValue()返回null



我有快照能够打印值的麻烦,但具体使用get值返回null。

我试图检索在Firebase中上传的列表,并将其与用户将传递的列表进行比较。

rootReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot item_child : snapshot.getChildren())
{
String recId = item_child.getKey();
DatabaseReference rootReference = FirebaseDatabase.getInstance("https://what-s-cookin-a3bec-default-rtdb.asia-southeast1.firebasedatabase.app/")
.getReference().child("Recipes").child(recId);
Log.d(TAG, "RECID: " + recId);
rootReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot ds : snapshot.getChildren())
{
Log.d(TAG, "SNAPSHOT: " + ds);
Log.d(TAG, "SPECIFIC: " + ds.child("ingredients"));
if(ds.child("ingredients").getValue() != null)
{
Log.d(TAG, "INGREDIENTS NOT NULL");
ArrayList<String> ing = new ArrayList<String>();
for (DataSnapshot ings : snapshot.child("ingredients").getChildren())
{
ing.add(ings.getValue(String.class));
Log.d(TAG, "DS: " + ds);
Log.d(TAG, "INGS: " + ings);
}

这是logcat的结果:

SNAPSHOT: DataSnapshot { key = ingredients, value = {0=Fish, 1=bitter, 2=cilantro} }
SPECIFIC: DataSnapshot { key = ingredients, value = null }

Logcat截图

这是我们的firebase:重火力点截图

食谱1634971267099favCount: 8id:"1634971267099";imageUrl:"https://firebasestorage.googleapis.com/v0/b/wha..."成分0:"Fish"1:"bitter"2:"cilantro"主:"Pork"措施:"test"名称:"Pochero"刺激:"test"服务:"15";时间:"30";uid:"tMdUFcAelyeVo5DYW3P7HolRW4S2">

检查您的代码是否与Firebase数据匹配。如果你发布Firebase数据的截图来了解数据库层次结构,会更清楚。

从你的代码中很难理解数据库的结构。