在Firebase中了解数据是否存在

5
我正在使用以下方法从Firebase获取用户名。但在这种情况下,我如何知道用户名是否存在。
Firebase firebaseRef = new Firebase("<Firebasae_URL>/Users");
Query query=firebaseRef.orderByChild("username").equalTo("username");

这个问题已经有了答案。http://stackoverflow.com/a/36256978/3145960 请查看 dataSnapshot.exists() - Reaz Murshed
当我使用addChildEventListener时,我该如何处理它? - Arun George
请查看已发布的答案。 - Reaz Murshed
1
在这种情况下,使用ChildEventListener是不可能的。该侦听器的方法将在添加/删除/移动/更改子项时被调用,而您要查看是否存在特定子项。正如@ReazMurshed所说,您需要一个ValueEventListener来检测客户端是否存在特定元素。 - Frank van Puffelen
1
请注意,纯客户端解决方案具有固有的竞争条件。请参阅Kato的完整解决方案。您将需要将JavaScript翻译成Java,但是考虑到Firebase SDK在这些技术之间具有完全相同的结构,因此这不应该太困难。 - Frank van Puffelen
2个回答

5
所以在你的情况下,代码应该像这样,用于查找数据库中是否存在用户名。
Firebase firebaseRef = new Firebase("<Firebasae_URL>/Users").child("username");
firebaseRef.addListenerForSingleValueEvent(new ValueEventListener) {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            // User Exists
        }
    }

    @Override
    public void onCancelled(FirebaseError firebaseError) {

    }
});

0

我找到的解决方案是检查查询返回值是否为

let docRef = db.collection('videos').select('id').where('id','==',quoteData.id);
docRef.get().then(function(doc){              
    if(doc.size > 0){
        // return value
    }
    else{
        // no return value
    }
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接