如何在firebase Android中搜索值

Sha*_*zal 16 android firebase firebase-realtime-database

我在Firebase中保存数据如下:

结构体

我想找到所有标题中都有#Yahoo的记录.对此的确切查询是什么?

我对创建的随机密钥感到困惑.我不知道如何处理这个,所以我在这里发布它.

Firebase firebase = new Firebase(Constants.FIREBASE_URL_USER_TASKS).child(Utils.encodeEmail(unProcessedEmail));
        Query queryRef = firebase.orderByKey().startAt("#" + mHashTag).endAt("#" + mHashTag + "\uf8ff");

        queryRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                mTasksList.clear();
                mAdapter.notifyDataSetChanged();
                for (DataSnapshot task : dataSnapshot.getChildren()) {
                    mTasksList.add(task.getValue(TaskModel.class));
                }
                mAdapter.notifyItemRangeInserted(0, mTasksList.size());
                mSwipeToRefresh.post(new Runnable() {
                    @Override
                    public void run() {
                        mSwipeToRefresh.setRefreshing(false);
                    }
                });
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {
                mSwipeToRefresh.post(new Runnable() {
                    @Override
                    public void run() {
                        mSwipeToRefresh.setRefreshing(false);
                    }
                });
            }
        });
Run Code Online (Sandbox Code Playgroud)

Fra*_*len 18

您无法搜索标题中包含的 任何项目#Yahoo.请参阅: 如何在firebase上执行sql"LIKE"操作?

但是,您可以搜索标题以下开头的 项目#Yahoo:

Firebase firebase = new Firebase(Constants.FIREBASE_URL_USER_TASKS).child(Utils.encodeEmail(unProcessedEmail));

Query queryRef = firebase.orderByChild("title").startAt("#" + mHashTag)
Run Code Online (Sandbox Code Playgroud)

为了使这项工作更好,您必须为Firebase规则添加索引:

"rules": {
  "userTasks": {
    "$email": {
      ".indexOn": "title" // index tasks in their title property
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


小智 5

这是与 Google Firebase 一起使用的。

DatabaseReference mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference();
    Query query = mFirebaseDatabaseReference.child("userTasks").orderByChild("title").equalTo("#Yahoo");
    query.addValueEventListener(valueEventListener);

ValueEventListener valueEventListener = new ValueEventListener()
{
    @Override
    public void onDataChange(DataSnapshot dataSnapshot)
    {
        for (DataSnapshot postSnapshot : dataSnapshot.getChildren())
        {
            //TODO get the data here

        }

    }

    @Override
    public void onCancelled(DatabaseError databaseError)
    {

    }
};
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

41668 次

最近记录:

7 年,2 月 前