【问题标题】:Check if data exist in a node that was referenced from firebase检查从 firebase 引用的节点中是否存在数据
【发布时间】:2017-05-02 22:25:41
【问题描述】:

我有一个新闻节点

News - key -title -content

我创建了一个名为 read_news 的新节点

ReadNews -key -news-key: true -news-key2: true -news-key3: true

现在的问题是,当我从控制台删除 News 节点中的全部或部分条目时,ReadNews 节点仍然保留删除新闻的参考 ID。当我运行该应用程序时,它会显示两个单元格而不是一个空的 RecyclerView。

我进行了调试,我意识到 FirebaseRecylerAdapter 仍然计算该节点中的项目数,即使我引用节点中的项目的位置已被删除。

我如何创建一个条件来知道 news-key 是否在 News 节点中不存在,并且 FirebaseRecyclerAdapter 会跳过它。

mDatabaseRef = FirebaseDatabase.getInstance().getReference().child("newspapers");
        mDatabaseRef.child(getRef(position).getKey()).addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                if (dataSnapshot.getValue() == null) {
                    Log.d("dsmfdvmms", "");
                }else{
                    NewsPaper newsPaper = dataSnapshot.getValue(NewsPaper.class);
                    viewHolder.libraryName.setText(newsPaper.getPaper_name());

                    loadImage(viewHolder.libraryImage, newsPaper.getLogo(), context);

                    vendotName = newsPaper.getPaper_name();
                    vendorIcon = newsPaper.getLogo();
                    vendorId = dataSnapshot.getKey();
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

【问题讨论】:

    标签: android firebase firebase-realtime-database android-recyclerview


    【解决方案1】:

    您无需验证密钥是否存在于第二个node 中即可将其从另一个节点中删除。当您删除 News 节点中的新闻时,请从 ReadNews 节点中删除相应的引用,如下所示:

    yourRef.child("ReadNews").child(key).child("news-key").removeValue();
    

    希望对你有帮助。

    【讨论】:

    • 问题是,我没有从应用程序中删除它们,而是从控制台 firebase.com 中删除了它们,并且由于它不存在而导致应用程序崩溃
    • 据我所知,您无法使用rules 从控制台手动执行此操作。根据official doc,有readingwritingvalidateindexOn的规则,而不是删除项目。您可以如上所述以编程方式删除项目。
    • 是的,我有,你的回答给了我一个想法,但没有解决问题...我所做的是,在我添加到适配器项目之前,我检查密钥是否可用主引用节点,如果它可用我添加到适配器,如果它不是我删除值,因为它的引用不存在。
    • 我明白了。所以,祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多