Я храню некоторые данные в Cloud Firesore. У меня есть экран с книгами, и когда я нажимаю кнопку «Мне нравится», он сохраняет книгу в коллекцию под названием WhishlistBooks
Теперь, прежде чем сохранить книгу в коллекции, как я могу проверить, если книгатам уже существует?
Я пытался использовать следующее, однако по какой-то причине он никогда не добавляет книгу, даже если она не существует:
ibWhishlist.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ibWhishlist.setSelected(!ibWhishlist.isSelected());
if (ibWhishlist.isSelected()) {
final FirebaseFirestore db = FirebaseFirestore.getInstance();
final Map<String, Object> whishlist_book = new HashMap<>();
whishlist_book.put("UserID",auth.getUid());
whishlist_book.put( "BookID", bookId );
whishlist_book.put("DateCreated", FieldValue.serverTimestamp());
whishlist_book.put("Popularity",bookRate);
CollectionReference WhishlistBooks = db.collection( "Users" ).document(auth.getUid()).collection( "WhishlistBooks" );
WhishlistBooks.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
if (document.getString( "BookID" ).equals( bookId )){
LayoutInflater inflater = LayoutInflater.from( BookDetailActivity.this );
View toastview = inflater.inflate( R.layout.toast_whishlist_exists, null );
Toast toast = new Toast( BookDetailActivity.this );
toast.setView( toastview );
toast.setDuration( Toast.LENGTH_LONG );
toast.show();
}
else{
db.collection( "Users" ).document( auth.getUid() ).collection( "WhishlistBooks" ).add( whishlist_book );
LayoutInflater inflater = LayoutInflater.from( BookDetailActivity.this );
View toastview = inflater.inflate( R.layout.toast_whishlist_added, null );
Toast toast = new Toast( BookDetailActivity.this );
toast.setView( toastview );
toast.setDuration( Toast.LENGTH_LONG );
toast.show();
}
}
} else {
}
}
});
} else {
//Handle de-select state change
}
}
});
Однако я столкнулся с двумя проблемами здесь:
1) В первый раз, когда пользователь даже не вставил ни одной книги, нет коллекции под названием Whishlist, поэтому задача не была успешно завершена.
2) по какой-то причинеон действительно не может найти, если bookId
уже существует.
Это изображение из базы данных:
Isесть какой-нибудь совет о том, как заставить его работать, чтобы я мог просто добавить книгу, если она не существует, или получить сообщение, если она уже существует?
Спасибо.