2

私は新しいです。私は、さまざまな年齢の子供たちがお互いにビームを撃ち合うようになっているレーザー タグの場所のアプリを書いています。その日、その週、その月のベストスコアを表示するハイスコア画面を作成中です。アイデアは、人々がリストに載っていることを誇りに思うことであり、毎月1回賞品も用意されています.

日付によるフィルタリング全体に行き詰まっています。

基本的に、スコアと顧客情報を追加して、スコアで並べ替えることができるように、古典的なゲストブックの例を変更しました。

    Key guestbookKey = KeyFactory.createKey("Guestbook", guestbookName);
    String fornavn = req.getParameter("fornavn");
    Integer score = Integer.parseInt(req.getParameter("score"));
    String email = req.getParameter("email");
    String tlf = req.getParameter("tlf");
    Date date = new Date();
    Entity highscore = new Entity("Greeting", guestbookKey);
    highscore.setProperty("date", date);
    highscore.setProperty("fornavn", fornavn);
    highscore.setProperty("score", score);
    highscore.setProperty("email", email);
    highscore.setProperty("tlf", tlf);

    DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
    datastore.put(highscore);

jsp には、全体のトップ 5 を取得するクエリがあります。

Query query = new Query("Highscore", highscoreKey).addSort("score", Query.SortDirection.DESCENDING);
List<Entity> greetings = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(5));

そして、ユーザー入力を .java に送信するフォームがあります。日付を設定する方法に関するヒントはありますか? 週番号と月番号を保存し、それに基づいてクエリを実行しますか? 面倒そうです。

4

3 に答える 3

1

私が知る限り、あなたの「ハイスコア」の種類は、実際にはすべてのスコアを追跡する「スコア」の種類です。

週/月のハイスコアを照会する代わりに、スコアを入力するたびに更新する単一の HighScore エンティティ (通常の「スコア」エンティティとは別のもの) を使用する方がよいでしょう。新しいスコアが入力されるたびに、ハイスコアを更新する必要があるかどうかを確認します。

派手なクエリは必要ありません。高スコアのエンティティを取得するだけで済みます。

または、履歴を追跡できるように、月ごとや週ごとなどに個別のハイ スコア エンティティが必要になる場合もあります。この場合、週または月をエンティティ キーにエンコードすると、現在の週/月の HighScore を簡単に取得できます。

于 2013-07-09T17:04:35.303 に答える