0

在检查手机号码是否存在后,我试图将数据存储在 Google App Engine Datastore 中,但即使手机号码在数据库中,代码也始终显示“失败”。它显示失败,但仍将数据存储在 Datastore 中。

请检查这里的代码,让我知道我的错误是什么:

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 回答