首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在防火墙实时数据库中动态添加新节点

如何在防火墙实时数据库中动态添加新节点
EN

Stack Overflow用户
提问于 2020-11-11 12:52:16
回答 1查看 693关注 0票数 0

新手到Firebase DB。以下是我的DB的结构:

代码语言:javascript
复制
    Cart-List
        |
        |-UserCarts
            |
            |- 2020-11-11  ( using dateformat :yyyy-MM-dd)
            |     |
            |     | -items
            |          |- productCode
            |          |- price 
            |- 

  1. 按以下方式创建节点:

FirebaseDatabase.getInstance().getReference().child("Cart-List").child("UserCarts")

  1. 如何在UserCarts下添加一个新节点(比如2020-11-11)?

在添加此新节点之前,是否有一种方法可以检查是否创建了此节点?

这将使我能够轻松地按日期查找项目。也许这会减少计算时间,从而减少费用?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-11 14:51:25

在使用以下引用时:

代码语言:javascript
复制
FirebaseDatabase.getInstance().getReference().child("Cart-List").child("UserCarts")

这意味着您创建的模式如下所示:

代码语言:javascript
复制
Firebase-root
  |
  --- Cart-List
        |
        --- UserCarts

如果需要在树中编写较低级别的数据,则需要再添加几个.child()调用。假设您想要在items节点下写入数据,那么引用应该如下所示:

代码语言:javascript
复制
val itemsRef = FirebaseDatabase.getInstance().getReference()
    .child("Cart-List")
    .child("UserCarts")
    .child("2020-11-11")
    .child("items");

要记住的一件事是,Firebase中的键是始终是字符串。如果您想要存储日期,则将其存储为时间戳更为方便。因此,添加时间戳作为对象的属性会更有帮助,正如我在下面的文章中的回答所解释的那样:

在添加这个新节点之前,是否有一种方法来检查是否创建了此节点?

如果要检查节点是否存在,则需要附加侦听器,如以下代码行所示:

代码语言:javascript
复制
val valueEventListener = object : ValueEventListener {
    override fun onDataChange(dataSnapshot: DataSnapshot) {
        if(dataSnapshot.exists()) {
            //Do what you need to do
        }
    }

    override fun onCancelled(databaseError: DatabaseError) {
        Log.d("TAG", databaseError.getMessage()) //Don't ignore potential errors!
    }
}
itemsRef.addListenerForSingleValueEvent(valueEventListener)

对于Java用户:

代码语言:javascript
复制
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if(dataSnapshot.exists()) {
            //Do what you need to do
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
    }
};
itemsRef.addListenerForSingleValueEvent(valueEventListener);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64786806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档