読者です 読者をやめる 読者になる 読者になる

16bit!

エンジニアじゃなくなっちゃった人が何かを書くブログ

【js】Parseのデータをランダムで1件だけ取得する

ちょっと前からParseというBaaS(ややこしい)で遊んでいます。

www.parse.com

前にmilkcocoaというBaaSで遊んでみて、あまりの簡単さ(コーディングもそうだし、静的ページで済むからサーバーが要らないっていうのもかなり大きい)に味をしめた感じですね。
というわけで、今回はParseを使ってデータベース上のデータを1件だけランダムで取得する方法。
javascriptです。

function loadRandomData() {
	var ObjCnt = Parse.Object.extend("Hoge");
	var queryCnt = new Parse.Query(ObjCnt);
	queryCnt.count({
		success: function(number) {
			var Hoge = Parse.Object.extend("Hoge");
			var query = new Parse.Query(Hoge);
			query.skip(Math.floor(Math.random() * number));
			query.limit(1);
			query.find({
				success: function(results) {
					var object = results[0];
					//処理
				},
				error: function(error) {
					alert("Error: " + error.code + " " + error.message);
				}
			});
		},
		error: function(error) {
			alert("Error: " + error.code + " " + error.message);
		}
	});
}

こんな感じ。
まず件数取得用のqueryCntで件数を取得して、件数をベースに乱数を出す。
で、skip()を使って乱数分データを飛ばして、limit(1)で1件だけ取得する、という構造。

データ数少なければ全件取得した上で乱数でインデックス決めて配列にアクセスしても良いんですが、
それだと10万超えたくらいからきつくなりそうな感じです。

おわり。