在Firestore上替代收集组查询

时间:2018-08-04 20:32:50

标签: java android firebase google-cloud-firestore

我打算查询集合中的所有文档以输出一个结果(用户名)。根据我的研究,此功能在Firestore上尚不可用。我有什么选择?

我正在开发一个Android应用,该应用可以使用户使用电话号码查询数据库,并获取与他们搜索的电话号码链接的用户名。每个文档中只有2个字段:Phone numberUsername

每当用户搜索电话号码时,都应查询集合中的每个文档,直到找到该电话号码并返回与该电话号码链接的用户名为止。

我该如何处理?我还要感谢Firestore的其他替代方案。

谢谢!

1 个答案:

答案 0 :(得分:0)

假设您有一个类似于以下内容的数据库:

Firestore-root
  |
  --- users (collection)
       |
       --- userId (document)
             |
             --- phoneNumber: 123456789
             |
             --- userName: "UserName"

要根据用户的电话号码获取其用户名,您需要使用查询。因此,请使用以下代码行:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference usersRef = rootRef.collection("users");
Query query = usersRef.whereEqualTo("phoneNumber", 123456789);
query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            for (QueryDocumentSnapshot document : task.getResult()) {
                String userName = document.getString("userName");
                Log.d(TAG, userName);
            }
        }
    }
});

您的logcat中的输出将是:

UserName