Как сделать запрос в Firebase похожим на запрос SQL? - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь разработать приложение для Android с использованием Java.Я использую базу данных NoSQL Firebase.Однако это сильно отличается от того, что я узнал до сих пор, поэтому я хотел бы, чтобы вы помогли мне сделать что-то вроде этого:

SELECT "name" FROM users WHERE email = "user@gmail.com"

с использованием синтаксиса Firebase.Не могли бы вы помочь мне?

1 Ответ

0 голосов
/ 13 декабря 2018

В мире баз данных NoSQL запрос, который выглядит следующим образом:

SELECT "name" FROM users WHERE email = "user@gmail.com"

Может быть написан двумя способами.Если вы используете База данных Firebase Realtime , запрос должен выглядеть следующим образом:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("users");
Query query = usersRef.orderByChild("email").equalTo("user@gmail.com");

А если вы используете Cloud Firestore , запрос должен выглядеть следующим образом:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference usersRef = rootRef.collection("users");
Query query = usersRef.whereEqualTo("email", "user@gmail.com");

Редактировать:

Согласно вашему комментарию, чтобы получить имя, используйте вышеуказанные строки вместе со следующими строками кода:

ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String name = ds.child("name").getValue(String.class);
            Log.d(TAG, name);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
query.addListenerForSingleValueEvent(valueEventListener);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...