这是我的firebase数据库json:
{
"trucks" : {
"-KvLTRmYdJKuYKZfila6" : {
"busiHours" : "월~금 09:00-22:00 강남역",
"imgUrl" : "https://firebasestorage.googleapis.com/v0/b/movetodiner.appspot.com/o/trk11.png?alt=media&token=7971b439-7321-4496-bf7d-2564fa799f53",
"starCount" : 1,
"stars" : {
"FJB7BWTdlyfCdzXJN4pwmSQWa1E3" : true
},
"truckDes" : "즉석 츄러스 전문점",
"truckName" : "스윗 츄러스",
"truckNo" : "1"
},
"-KvLTo5_eWVWxSAhemK4" : {
"busiHours" : "월~일 09:00-19:00 홍대입구역",
"imgUrl" : "https://firebasestorage.googleapis.com/v0/b/movetodiner.appspot.com/o/trk11.png?alt=media&token=7971b439-7321-4496-bf7d-2564fa799f53",
"starCount" : 1,
"stars" : {
"FJB7BWTdlyfCdzXJN4pwmSQWa1E3" : true
},
"truckDes" : "수제 케밥을 알고싶니?",
"truckName" : "오빠 손맛",
"truckNo" : "2"
},
"-KvLTxrGs9tAs3w5jJVV" : {
"busiHours" : "화, 목, 토,일 10:00-23:00 이태원",
"imgUrl" : "https://firebasestorage.googleapis.com/v0/b/movetodiner.appspot.com/o/trk11.png?alt=media&token=7971b439-7321-4496-bf7d-2564fa799f53",
"starCount" : 0,
"truckDes" : "백종원이 추천한다!",
"truckName" : "도깨비 핫도그",
"truckNo" : "3"
},
"-KvLU4ViXM78aH_thFjF" : {
"busiHours" : "ggg",
"imgUrl" : "https://firebasestorage.googleapis.com/v0/b/movetodiner.appspot.com/o/trk11.png?alt=media&token=7971b439-7321-4496-bf7d-2564fa799f53",
"starCount" : 2,
"stars" : {
"FJB7BWTdlyfCdzXJN4pwmSQWa1E3" : true,
"Jm7JQQBGtzQgLUBgcEutB3O6YAV2" : true
},
"truckDes" : "6~7",
"truckName" : "nonono",
"truckNo" : "4"
},
"-KvLUCR-pBjQot6R1Cj6" : {
"busiHours" : "TT",
"imgUrl" : "https://firebasestorage.googleapis.com/v0/b/movetodiner.appspot.com/o/trk11.png?alt=media&token=7971b439-7321-4496-bf7d-2564fa799f53",
"starCount" : 0,
"truckDes" : "8~10",
"truckName" : "Twice",
"truckNo" : "5"
}
}
}
我想了解最喜欢的List。
查询:从卡车中选择*星号(包含)FJB7BWTD ~~;
F7B7是我的uid。
如果用户点击收藏夹按钮,它将在星空中生成uid。
所以我想在每个物体的星星上检查我的uid。
所以我认为它需要一个查询。
但它没有用。
enter code here
Query mQuery=database.getReference().child("trucks").orderByChild("stars").equalTo(auth.getCurrentUser().getUid());
mQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren())
{
favlist.add(postSnapshot.getValue().toString());
System.out.println(postSnapshot.getKey() + " / " +postSnapshot.getValue().toString() + " / ");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
程序使我的代码滑了..... ;;
如何编写代码?让我解释一下。
答案 0 :(得分:2)
要实现您的目标,您需要通过添加名为favoriteList
的新节点来稍微更改数据库结构。您需要这样做,因为无需下载整个trucks
对象以查询数据库中最喜欢的卡车。所以你的数据库结构应如下所示:
Firebase-root
|
--- favoriteList
|
--- FJB7BWTdlyfCdzXJN4pwmSQWa1E3
| |
| --- -KvLTRmYdJKuYKZfila6: true
| |
| --- -KvLTo5_eWVWxSAhemK4: true
| |
| --- -KvLU4ViXM78aH_thFjF: true
|
--- Jm7JQQBGtzQgLUBgcEutB3O6YAV2
|
--- -KvLU4ViXM78aH_thFjF: true
通过这种方式,您可以通过在Firebase-root -> favoriteList -> userId
创建新曲目时,您已经在使用push()方法。因此,当您生成该密钥(即我在第一辆卡车上看到的-KvLTRmYdJKuYKZfila6)时,只需将该密钥保存到这样的变量中:
String truckKey = yourRef.push().getKey();
要保存数据,请使用以下代码
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userIdRef = rootRef.child("favoriteList").child("FJB7BWTdlyfCdzXJN4pwmSQWa1E3").child(truckKey).setValue(true);