相关疑难解决方法(0)

Google Firestore:查询属性值的子字符串(文本搜索)

我想添加一个简单的搜索字段,想使用类似的东西

collectionRef.where('name', 'contains', 'searchTerm')

我尝试过使用where('name', '==', '%searchTerm%'),但它没有返回任何东西.

firebase google-cloud-firestore

78
推荐指数
15
解决办法
3万
查看次数

Firebase中的优先级是什么意思?

我已经阅读了有关优先级的Firebase文档,但我认为我还没理解.

我想我明白它与查询和排序数据有关.给我的问题(和答案)一些重量,在什么情况下你可能会使用优先级?

从我读过的文档中,您可以在某个引用中设置值时设置优先级,然后在查询引用优先级时根据其类型和值确定顺序.这听起来有些道理,但我并不十分了解它.

firebase

31
推荐指数
1
解决办法
8428
查看次数

使用Firebase对多个值进行过滤和排序

我正在使用Firebase构建社交应用.我在Firebase中存储帖子,如下所示:

posts: {
   "postid": {
      author: "userid" 
      text: "",
      date: "timestamp"
      category: "categoryid"
      likes: 23
   }
}
Run Code Online (Sandbox Code Playgroud)

每个帖子属于一个类别,可以喜欢帖子.

现在,我正在尝试显示属于特定类别的帖子,按喜欢的数量排序.我可能还希望按日期限制过滤器,以仅显示类别中最近,最喜欢的帖子.我怎样才能做到这一点?

Firebase查询功能似乎不支持这样的多个查询,这看起来很奇怪......

firebase

12
推荐指数
1
解决办法
1万
查看次数

如何加载分数高于100的最新帖子?

情况:

我目前使用以下代码按时间顺序加载最新帖子:


码:

        $scope.data = [];
        var _n = Math.ceil(($(window).height() - 50) / (350)) + 1;
        var _start = <%= lastID %>;
        var firstElementsLoaded = false;

        $scope.getDataset = function() {

            fb.orderByChild('id').startAt(_start).limitToFirst(_n).on("child_added", function(dataSnapshot) {

                _start = dataSnapshot.child("id").val() + 1;
                console.log("LAST TRUE ID:"+ _start);

                $scope.data.push(dataSnapshot.val());
                $scope.$apply()
                console.log("THE VALUE:"+$scope.data);

                firstElementsLoaded = true;
            });
        };


        $scope.getDataset();
Run Code Online (Sandbox Code Playgroud)

题:

我应该如何修改它基本上具有完全相同的行为,但只根据按时间顺序查询分数大于100的帖子?


更新:

我终于找到了一种方法来使用我的架构"创建另一个索引"方法.但仍存在一个障碍:

如何将childNode从一个节点复制到另一个节点?

javascript firebase firebase-realtime-database

11
推荐指数
1
解决办法
272
查看次数

如何通过Firebase数据库列表中的多个键进行查询

我在Firebase中有此列表

"games":{
          "-Kaaaaaaaaaaaaaaaas" : {
            "name" : "name_a"
          },
          "-Kbbbbbbbbbbbbbbbbs" : {
            "name" : "name_b"
          },
          "-Kccccccccccccccccs" : {
            "name" : "name_c"
          },
          "-Kdddddddddddddddds" : {
            "name" : "name_d"
          },
        }
Run Code Online (Sandbox Code Playgroud)

我只想查询其中两个游戏.我有他们的钥匙:

"-Kaaaaaaaaaaaaaaaas"
"-Kbbbbbbbbbbbbbbbbs"
Run Code Online (Sandbox Code Playgroud)

我想这样做:

WHERE key="-Kaaaaaaaaaaaaaaaas" OR key="-Kbbbbbbbbbbbbbbbbs"
...
WHERE key IN ("-Kaaaaaaaaaaaaaaaas" , "-Kbbbbbbbbbbbbbbbbs")
Run Code Online (Sandbox Code Playgroud)

或使用Firebase代码:

var gamesRef = ref.child("games");
var query = gamesRef.orderByKey().equalTo("-Kaaaaaaaaaaaaaaaas" , "-Kbbbbbbbbbbbbbbbbs", ...);
var list = $firebaseArray(query);
Run Code Online (Sandbox Code Playgroud)

这是不可能的,因为equalTo只能接受:

equalTo(String value, String key)
equalTo(double value)
equalTo(double value, String key)
equalTo(String value)
equalTo(boolean value, String key)
equalTo(boolean …
Run Code Online (Sandbox Code Playgroud)

javascript firebase firebase-realtime-database

7
推荐指数
0
解决办法
5274
查看次数

如何在Firebase中执行联接查询?

在HashMap中检索组密钥后,如何执行连接查询,该查询仅显示grp具有该特定用户成员的那些详细信息.如果这种结构错误,请帮助我.

结构体:

截图

android join firebase firebase-realtime-database

7
推荐指数
1
解决办法
2万
查看次数

如何查询和过滤Firebase实时数据库

我想从用户输入名字和姓氏的数据库中获取所有人员。

到目前为止,这是我的代码:

admin.database().ref('persons').orderByChild('Firstname').equalTo(firstName).limitToLast(1).once("value").then(function(snapshot) {
}
Run Code Online (Sandbox Code Playgroud)

这段代码只能过滤名字,但是我找不到任何为姓添加其他Where子句的方法。我试图添加另一个orderBy,但它似乎不起作用。实时数据库是否必须很难进行简单的查询?

javascript node.js firebase firebase-realtime-database

7
推荐指数
1
解决办法
1万
查看次数

Firebase查询

假设我有这样的结构:

-users
  -user1_uid
    name
    distance
    age
Run Code Online (Sandbox Code Playgroud)

我如何进行查询(查找距离<100且年龄介于20到25之间的用户)?

我试过标准方法

        let recentPostsQuery = (ref?.child("users").queryOrderedByChild("age").queryStartingAtValue("20"))!
Run Code Online (Sandbox Code Playgroud)

问题是,这似乎不可能查询多个孩子(如结合年龄和距离过滤).几个月前与Firebase相比,这方面有什么变化吗?我相信,在第一次查询后在本地过滤它们不是一种选择,因为可能存在数千个对象.

filtering firebase swift

6
推荐指数
2
解决办法
7961
查看次数

查询中的Firebase多个WHERE子句

我正在尝试检索仅在到达日期和机场匹配时返回航班数据的数据.我似乎无法找到最佳解决方案.我只能在机场或抵达日期相同的情况下提取数据,而不是两者(只能使用equalTo()一次).这是我当前的Java代码:

Firebase ref = mFirebaseRef.child(FirebaseReference.CHILD_FLIGHTS);

Query queryRef = ref.orderByChild("airport").equalTo(getAirport());

queryRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        System.out.println(TAG + " datasnapshot is equal to " + dataSnapshot);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是数据本身:

{
   "flight":{
      "1ddf3c02-1f2e-4eb7-93d8-3d8d4f9e3da2":{
         "airport":"Gothenburg, Sweden - Landvetter (GOT)",
         "arrivalDate":"2016-06-21",
         "arrivalTime":"20:58",
         "code":"GOT",
         "departureDate":"2016-06-23",
         "departureTime":"20:58"
      },
      "c2c86e54-b4d0-4d83-934b-775a86f0a16c":{
         "airport":"Gothenburg, Sweden - Landvetter (GOT)",
         "arrivalDate":"2016-06-21",
         "arrivalTime":"20:50",
         "code":"GOT",
         "departureDate":"2016-06-23",
         "departureTime":"20:50"
      }
   },
   "users":{
      "1ddf3c02-1f2e-4eb7-93d8-3d8d4f9e3da2":{
         "age":"25",
         "createdTime":"1466533088358",
         "email":"test2@test.com",
         "provider":"password",
         "sex":"M",
         "username":"user2"
      },
      "c2c86e54-b4d0-4d83-934b-775a86f0a16c":{
         "age":"25",
         "createdTime":"1466374588255",
         "email":"test1@test.com",
         "provider":"password",
         "sex":"M",
         "username":"user1"
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

当前的Java代码将返回所有只有相同机场的子代码.正如您所猜测的那样,当需要对客户端进行排序的数据量远大于上述测试数据时,这是不可行的.我怎样才能更好地过滤firebase上的数据呢?

java android firebase

6
推荐指数
1
解决办法
1万
查看次数

第二/第三级的 firebase 查询

我在 Firebase 中使用 Javascript,我想对第二级或第三级存在的值进行查询,我的数据库是这样的:

Users :
        -KNwBd5cF6iY9dWh0eFd :
                name: "Jon Snow"
                phones:
                    phone1: "0123456789"
                    phone2: "0123456987"
Run Code Online (Sandbox Code Playgroud)

我想对phone1值进行查询,我现在orderByChild用来查询数据库,我的代码是:

var ref = firebase.database().ref("users");
ref.orderByChild("name").equalTo("Jon Snow").on("value", function(snapshot) {
    console.log(snapshot.val());
});
Run Code Online (Sandbox Code Playgroud)

但是我只能用它来查询第一级值的值,但如何在第二级或第三级进行另一个查询。

javascript firebase firebase-realtime-database

5
推荐指数
1
解决办法
1743
查看次数