是否可以在Android的where子句中传递两个参数来访问Firestore数据库

时间:2019-06-18 06:26:57

标签: android google-cloud-firestore

是否可以在Android中为Firestore编写原始查询或传递多个参数?

我尝试过

`db.collection("users").whereEqualTo("uername", "JHON")`

但是我只能传递一个参数而不是多个参数。我想将以下示例SQL查询转换为Firestore查询

示例:

select * from login where username = "Jhon" and password = "12345"

1 个答案:

答案 0 :(得分:1)

对于原始查询,您可以使用Firebase Query,这是示例

Query query = yourCollectionRef.whereEqualTo("username ", "your_value_here")
    .whereEqualTo("password", "your_value_here")
    .whereEqualTo("email", "your_value_here");

另一种方法:您可以遵循标准方法

将有关用户注册的用户数据存储在Firebase数据库中

DatabaseReference ref = 

FirebaseDatabase.getInstance().getReference().child("credentials");

//to store values in your credentials node just use this code

ref.child("usernames").child(username);
ref.child("usernames").child(username).child("password").setValue(password);

// here username and password are the strings you want to store

您可以对所有新用户执行此操作,以在应用程序中注册他们。同样,这使您更容易(读得更快)来搜索特定的用户名和相应的密码。

您可以使用以下代码来实现:

ref.child("credentials").orderByChild("usernames").equalTo(username).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            // here you can do what you want, like comparing the password of the username and other things you require to do

            }

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });