小编Ron*_*on7的帖子

如何在Firebase数据库Android中添加新子项

我正在尝试使用DatabaseReference我的FirebaseAndroid应用中添加一个新的孩子.我正在做:

DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference() 
mDatabase.child("childToAdd").setValue(1);
Run Code Online (Sandbox Code Playgroud)

我可以使用常规Firebase引用来执行此操作,因为如果不存在,则将子项添加到数据库中.
我怎么能这样做DatabaseReference呢?

编辑:感谢所有的建议,但我遇到以下代码的问题.当它进入if块时,它不会将数据推送到数据库.

https://gist.github.com/rounaksalim95/a5cba332400c6caf8320f15b0cbf06e8

当我使用旧的Firebase参考尝试此操作时,我得到错误代码11(从firebase runloop调用的用户代码),并且使用新的数据库引用,我得到错误代码-3(即使我没有安全规则,PermissionDenied).

更新:

我得到它做我想要使用单值事件监听器:

Firebase userRef = new Firebase(BASEURL + "userData");

userRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.child(user.getUid()).getValue() == null) {
            userRef.child(user.getUid()).setValue(1);
        }
    }

    @Override
    public void onCancelled(FirebaseError firebaseError) {

    }
});  
Run Code Online (Sandbox Code Playgroud)

但是数据库引用不允许我添加这样的值.

android firebase firebase-realtime-database

9
推荐指数
1
解决办法
4万
查看次数

Firebase - 多个用户使用旧值同时更新同一对象

我正在跟踪用户通过Android应用在Firebase数据库上更新的计数.现在它工作正确的方式是,在交互用户的应用程序中查找当前计数的数据库(使用addListenerForSingleValueEvent()onDataChange()内部的新定义的方法ValueEventListener)并加1,然后使用将计到这个新的价值mRef.setValue(),其中mRef为参考到数据库.

我担心的问题是如果大量用户同时与数据库进行交互会发生什么; Firebase是否负责确保正确读取和递增值,或者是否存在大量重叠以及由此导致的数据丢失.

android firebase firebase-realtime-database

8
推荐指数
1
解决办法
5532
查看次数

使用Firebase Android订购数据

我遇到了一个奇怪的问题,其中使用的Firebase查询orderByChild()实际上并没有对数据进行排序.下面是我正在尝试订购的数据的快照:(为了这个例子,总数是关闭的)

数据快照

这是我到目前为止使用的代码:

Query query = locationComment.orderByKey();
    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.getValue() == null) {
                return;
            }
            data.clear();
            adapter.notifyDataSetChanged();
            String userId;
            String time;
            String comment;
            Map<String, String> commentMap = (Map) dataSnapshot.getValue();
            for (Map.Entry<String, String> entry : commentMap.entrySet()) {
                if(!((entry.getKey()).contains("total"))) {
                    String[] keyString = (entry.getKey()).split(",");
                    time = keyString[0];
                    userId = keyString[1];
                    comment = entry.getValue();
                    Date resultdate = new Date(Integer.parseInt(time));
                    data.add(new Comment(comment,
                            DateFormat.getDateTimeInstance().format(resultdate), userId));
                    adapter.notifyItemInserted(data.size());
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        } …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-realtime-database

3
推荐指数
1
解决办法
8929
查看次数