하위 컬렉션을 처리하고 Android로 데이터를 가져 오는 데 문제가 있습니다.
내 Firestore 구조는 다음과 같습니다.
그리고 여기에 문제가 있습니다.
내가 원하는 것 : 다른 쿼리에서 사용하기 위해 하위 컬렉션의 모든 productID 필드를 검색합니다. 내가 갇힌 것 : 실제로 어떻게할까요? 나는 모든 소방서 관련 질문을 스토킹했지만 길을 잃을뿐입니다. 이것은 내가 시도한 것입니다. 네, 저는 RecylcerView와 함께 일하고 있습니다.
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private CollectionReference panieref = db.collection("panier");
private CollectionReference prodref = db.collection("products");
private void setUpRecyclerView(){//for loading items from firestore
final List<List<DocumentSnapshot>> productsList=new ArrayList<>();
Query query =panieref.whereEqualTo("ID_del",newcom.getID_del());
panieref.whereEqualTo("ID_del",newcom.getID_del()).get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull final Task<QuerySnapshot> task) {
if(task.isSuccessful()){
for(final QueryDocumentSnapshot document : Objects.requireNonNull(task.getResult())) {
prodref.whereEqualTo("productID", Objects.requireNonNull(document.get("productID")).toString()).get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
if(task.isSuccessful()){
CollectionReference ProdColRef=panieref.document((String) Objects.requireNonNull(document.get("product_ID"))).collection("produits");
productsList.add(task.getResult().getDocuments());
}
}
});
} }
}
});
adapter= new detailsAdapter(productsList);
//call up the recyclerview from the itemlist layout into the main activity layout
RecyclerView recyclerView = findViewById(R.id.items_recycler_view);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
recyclerView.setAdapter(adapter);
}
제발 도와주세요, 일주일이 지났고 진행 상황이 표시되지 않았고 너무 많은 코드 줄을 스크랩했습니다. 꽤 쓸모없는 것 같습니다.
지금은 다음을 사용하여 제품 컬렉션에 대한 참조를 만들고 있습니다.
private CollectionReference prodref = db.collection("products");
즉, Firestore는 products
내가 할 수있는 한 데이터베이스에 존재하지 않는 최상위 컬렉션 이름을 찾습니다 .
특정 panier
문서 에서 제품 컬렉션을 원하면 해당 문서를 호출해야합니다 collection("products")
.
FirebaseFirestore db = FirebaseFirestore.getInstance();
CollectionReference panieref = db.collection("panier");
final List<List<DocumentSnapshot>> productsList=new ArrayList<>();
Query query =panieref.whereEqualTo("ID_del",newcom.getID_del());
panieref.whereEqualTo("ID_del",newcom.getID_del()).get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull final Task<QuerySnapshot> task) {
if(task.isSuccessful()){
for(final QueryDocumentSnapshot document : Objects.requireNonNull(task.getResult())) {
CollectionReference prodref = document.getReference().collection("products");
prodref.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
if(task.isSuccessful()){
productsList.add(task.getResult().getDocuments());
}
}
});
}
}
}
});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다