【问题标题】:How to make a query in Firebase similar to a SQL query?如何在 Firebase 中进行类似于 SQL 查询的查询?
【发布时间】:2018-12-13 13:26:07
【问题描述】:

我正在尝试使用 Java 开发适用于 Android 的应用程序。我正在使用 NoSQL Firebase 数据库。但是,这与我目前所学的非常不同,所以我希望你能帮我做这样的事情:

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

使用 Firebase 语法。你可以帮帮我吗?

【问题讨论】:

标签: java android sql database firebase


【解决方案1】:

在 NoSQL 数据库的世界中,查询如下所示:

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

可以有两种写法。如果您使用Firebase Realtime Database ,则查询应如下所示:

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);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 2018-08-04
相关资源
最近更新 更多