如何在firebase Android中搜索一个值

前端之家收集整理的这篇文章主要介绍了如何在firebase Android中搜索一个值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在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);
                    }
                });
            }
        });

解决方法

您无法搜索标题包含#Yahoo的任何项目.看到:
How to perform sql “LIKE” operation on firebase?

然而,您可以搜索标题以#Yahoo开头的项目:

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

Query queryRef = firebase.orderByChild("title").startAt("#" + mHashTag)

为了使这项工作顺利进行,您必须添加一个index to your Firebase rules

"rules": {
  "userTasks": {
    "$email": {
      ".indexOn": "title" // index tasks in their title property
    }
  }
}
原文链接:https://www.f2er.com/android/310558.html

猜你在找的Android相关文章