#java #android #firebase #firebase-realtime-database
#java #Android #firebase #firebase-realtime-database
Вопрос:
У меня есть следующий код для отклонения дубликатов в Firebase «Admin»:
public static void checkForDuplicateTweet()
{
Query adminQuery = dbRefAdminFeed.orderByChild("tweetStatusID").equalTo(TweetData.tweetStatusID);
Query feedQuery = dbRefFeed.orderByChild("tweetStatusID").equalTo(TweetData.tweetStatusID);
adminQuery.addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
if (dataSnapshot.exists())
{
boolean isFirst = true;
for (DataSnapshot postSnapshot : dataSnapshot.getChildren())
{
TweetData tweetData = postSnapshot.getValue(TweetData.class);
if (isFirst)
{
isFirst = false;
}
else
{
removeTweetFromFirebase(Objects.requireNonNull(tweetData).tweetKey);
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
{
}
});
}
Как мне проверить другого родителя, чтобы узнать, существует ли tweetStatusID под этим родителем со следующей структурой?
Ответ №1:
Вы на полпути. Чтобы проверить, существует ли значение для обоих родителей, вы должны выполнить запрос для каждого родителя. Итак, просто запустите запрос dbRefFeed
, как только вы определите, что значение существует dbRefAdminFeed
.
Query adminQuery = dbRefAdminFeed.orderByChild("tweetStatusID").equalTo(TweetData.tweetStatusID);
Query feedQuery = dbRefFeed.orderByChild("tweetStatusID").equalTo(TweetData.tweetStatusID);
adminQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot adminSnapshot) {
if (adminSnapshot.exists()) {
feedQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot feedSnapshot) {
if (feedSnapshot.exists()) {
...
}
}
}
}