0

携帯電話番号が存在するかどうかを確認した後、Google App Engine データストアにデータを保存しようとしていますが、携帯電話番号がデータベースにある場合でも、コードは常に「失敗」を示します。失敗が表示されますが、データは引き続きデータストアに保存されます。

ここでコードを確認し、私の間違いを教えてください:

String name= request.getParameter("name");
String email=request.getParameter("email");
String mobileno= request.getParameter("mobileno");
String password= request.getParameter("passwd");
String status=""; 
//
Query query = new Query("dailyquizuser");
    query.addFilter("mobileno", Query.FilterOperator.EQUAL, mobileno);
     DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
    PreparedQuery pq = datastore.prepare(query);
    Entity dailyquizuserentity = pq.asSingleEntity();

    out.println("dailyquizuserentity: " + dailyquizuserentity);
    if(dailyquizuserentity != null){
        status="failure";
        out.println(status);


    } else {
        Key dailyquizuserKey = KeyFactory.createKey("dailyquizuser", "dailyquiz");
        Entity  dailyquizuser = new Entity("dailyquizuser", dailyquizuserKey);
        dailyquizuser.setProperty("name",  name);
        dailyquizuser.setProperty("email", email);
        dailyquizuser.setProperty("mobileno", mobileno);
        dailyquizuser.setProperty("password", password);

       DatastoreService datastore1 = DatastoreServiceFactory.getDatastoreService();
        datastore1.put(dailyquizuser);
        out.println("dailyquizuser: " + dailyquizuser);
        status="success";
        out.println(status);

    }


    %> 
4

1 に答える 1

0

いくつかのメモ:

  1. mobileno変数がそうでないことを確認する必要がnullあります(他のすべての必須パラメーターと同じです)。これは、常にエンティティを見つける理由を説明します-nullは有効なプロパティ値です。nullフィルターを使用してクエリを実行するとnull、プロパティを持つエンティティが見つかりますが、プロパティを持たないエンティティをクエリしても見つかりません。

  2. あなたが示したコードは、単一の親を持つエンティティを作成します:

    // a key to a parent
    Key dailyquizuserKey = KeyFactory.createKey("dailyquizuser", "dailyquiz"); 
    
    // new entity with a parent
    Entity  dailyquizuser = new Entity("dailyquizuser", dailyquizuserKey); 
    

    したがって、「dailyquizuser」を検索するときは、祖先クエリの使用を検討する必要があります。

  3. addQuery(..)廃止されました。setQuery()代わりに使用してください。

于 2012-07-10T10:22:35.473 に答える