如何计算当前用户的孩子总数?

时间:2020-12-29 08:43:06

标签: android firebase firebase-realtime-database

enter image description here

如何获取当前用户的孩子数量,例如当前用户的电子邮件是 uzahid231@gmail.com 所以我必须得到 1,因为其他产品来自不同的用户

2 个答案:

答案 0 :(得分:1)

使用官方文档,您应该能够将其翻译成您需要的语言。

迅速完成:

// Get reference to the DB
let ref = db.collection("Products")

// Query for the email field
let query = ref.whereField("email", isEqualTo: "uzahid231@gmail.com").getDocuments() { (querySnapshot, err) in
        if let err = err {
            print("Error getting documents: \(err)")
        } else {
            querySnapshot!.documents.count // <-- Number of documents
            for document in querySnapshot!.documents {
                // all the documents that satisfied the query
            }
        }


}

这里是文档: https://firebase.google.com/docs/firestore/query-data/queries

答案 1 :(得分:0)

这样的事情应该可以解决问题:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Products");
Query query = ref.orderByChild("uid").equalTo(uid);

query.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        System.out.println(dataSnapshot.getChildrenCount());
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
}

一些注意事项:

  • 我强烈建议您继续搜索您的用例,因为已经有很多关于此的信息:https://www.google.com/search?q=firebase+realtime+database+get+count+of+nodes+for+condition
  • 此代码读取所有匹配的子节点,因为 Firebase 没有内置聚合操作。如果您只是为当前用户读取节点,那可能还不错,但是每当您执行此类操作时,请考虑您为多少用户读取了多少数据。在某些时候,将计数简单地存储在数据库中并在编写产品时更新它会更有效。有关更多信息,请参阅上面搜索结果中的一些答案。