gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:47:42 26 4
gpt4 key购买 nike

有没有办法像这样从 firebase 获取随机记录:

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

我用这段代码解决了这个问题,但它下载了所有记录,所以如果 DB 更大,我的应用程序会运行得很慢:

HTML代码:

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

JS代码:

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);
});
};

关于database - 使用 AngularFire 从 Firebase 中选择随机记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27178393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com