【问题标题】:Firebase Query an Array of KeywordsFirebase 查询一组关键字
【发布时间】:2016-07-11 12:24:56
【问题描述】:

我的代码

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("stock");
Query i = myRef.orderByChild("keywords").equalTo("Hammer");
i.addValueEventListener(new ValueEventListener(){
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        System.out.println(dataSnapshot.getValue());    
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

我的问题:我只想使用关键字查询一项,例如。 “锤子”,但我只得到空值。如果我像 "orderByChild("keyword").equalTo("Hammer")" 这样查询,我会得到相同的空值。请帮帮我。

【问题讨论】:

  • 请阅读本指南以在此处提问:stackoverflow.com/help/how-to-ask
  • 将代码添加为文本。并包括myRef所指的内容。
  • @adolfosrs 提供的数据库中没有“股票”节点
  • 为什么要使用实时数据库来存储这些静态数据?好像有点矫枉过正
  • "stock" 有,只是图片上看不到

标签: android firebase firebase-realtime-database


【解决方案1】:

orderByChild 只会查看您在/stocks 中引用的分支的下一级子级。仅当您在/stocks 下方有孩子keywords/0/keyword 时,您的代码才有效。由于它在/stocks/inserate/0 下,它不会工作。

Query i = myRef.child("inserate/0/keywords").orderByChild("keyword").equalTo("Hammer");

这可以解决问题,但可能不是您想要的。如果您想在所有 iserates 子项中进行搜索,您应该对您的数据库进行一些重构。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 2014-04-24
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多