使用 AngularFire 从 Firebase 中选择随机记录

2024-04-03

有没有办法从 firebase 获取随机记录,如下所示:

{
  "-JbmopNnshefBT2nS2S7" : {
    "dislike" : 0,
    "like" : 0,
    "post" : "First post."
  },
  "-JbmoudijnJjDBSXNQ8_" : {
    "dislike" : 0,
    "like" : 0,
    "post" : "Second post."
  }
}

我使用此代码来解决问题,但它会下载所有记录,因此如果数据库更大,我的应用程序将运行非常慢:

HTML 代码:

    <div ng-controller="RandomCtrl">{{RandomPost.post}}</div>

JS code:

var app=angular.module('App', ['firebase']);

app.controller('RandomCtrl', function($scope, $firebase){
    var ref = new Firebase("https://ind.firebaseio.com/");
    var sync=$firebase(ref);

    $scope.messages = sync.$asArray();

    $scope.GetRandomPost=function(){
        return $scope.RandomPost=$scope.messages[Math.floor(Math.random()*$scope.messages.length)];
    };

    $scope.GetRandomPost();    

});

您可以将 startAt 与您自己的增量索引一起使用。例如,假设您的记录中有索引(0 到 n)。

执行以下查询: orderByChild("index").startAt(rint).limitToFirst(1);

看代码片段:

var rint = Math.floor((Math.random() * 10)) // you have 10 records
var query = ref.orderByChild("index").startAt(rint).limitToFirst(1);

var results = $firebaseArray(query);
results.$loaded(
  function(x) {
    // let's get one
    $scope.oneResult = x[0];
  }, function(error) {
    console.error("Error:", error);
  });
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 AngularFire 从 Firebase 中选择随机记录 的相关文章

随机推荐