当前位置: 首页 > 知识库问答 >
问题:

尝试使用GAE数据存储中的键访问实体时出现异常

方博
2023-03-14

我实际上正在使用GAE构建一个聊天室,问题是我将clientid和令牌存储在chatrromservlet中,并使用datastore密钥访问它们,但当我试图使用该密钥从sayservlet访问数据存储时,我得到一个异常,即没有找到具有该密钥的实体。

我的chatroomservlet

    String clientid = request.getParameter("clientid");
    ChannelService channelService = ChannelServiceFactory.getChannelService();

    String token = channelService.createChannel(clientid);
    channelService.sendMessage(new ChannelMessage(token, "Hello World"));
    System.out.println("token is ="+token);

    JSONObject job=new JSONObject();
    job.put("token",token);

    Key userkey=KeyFactory.createKey("users", "user1");
    System.out.println("user key in chatroom "+ userkey);
    Entity ent=new Entity("user");
    ent.setProperty("clientid", clientid);
    ent.setProperty("token", token);


    DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
    datastore.put(ent);
    System.out.println(ent);  

say servlet是

            String message = request.getParameter("message");
            String clientid = request.getParameter("clientid");
            System.out.println(message);

            Key userkey=KeyFactory.createKey("users", "user1");
            Entity entity;
            DatastoreService datastore = DatastoreServiceFactory
                    .getDatastoreService();
            entity = datastore.get(userkey);
            String token = (String) entity.getProperty("token");
            System.out.println("token frm db ="+token);

            ChannelService channelService = ChannelServiceFactory.getChannelService();
            channelService.sendMessage(new ChannelMessage(token, "Hello World"));
            System.out.println("message is ="+message);
            System.out.println("cid is ="+clientid);

如果在访问时有任何错误,请帮助我。

共有1个答案

司徒锐进
2023-03-14

看起来像是在chatroomservlet中创建了一个实体,但不使用生成的密钥。因此,当您在say servlet中通过该键进行查找时,数据存储将无法找到该实体。

您的chatroomservlet应该使用userkey创建实体:

    Key userkey=KeyFactory.createKey("users", "user1");
    System.out.println("user key in chatroom "+ userkey);
    Entity ent=new Entity(userkey);
 类似资料:
  • 我正在尝试将一个图像存储到FireBase数据库中,我很确定所有的代码都可以很好地获取imagelink,因为它不再像以前那样显示错误。然而现在,当我上传图片时,出现了一个新问题。这与存储异常有关,我猜它在实际从存储中提取imagelink并将其插入数据库时遇到了问题。下面是我认为出现问题的代码: 如果需要,这是我的整个代码: } 错误消息: 2020-06-02 13:54:22.594 346

  • 一个GAE应用程序有可能使用Objectify访问另一个GAE应用程序(两个应用程序都托管在同一个Google帐户下)的数据存储吗?如果是,我如何传递服务帐户凭据来对象化(哪个API调用)?

  • 我对php和mySQL是完全陌生的,并且正在尝试连接到远程数据库。这是我的代码:- $result=mysql_query(“Select*FROM Constants”); while($ROW=mysql_fetch_array($result)){echo$ROW['name']; echo“ ”;} mysql_close($con); 对这个问题有什么想法吗?马特·蒂亚

  • 如果我没有使用spring构建图形,那么是否可以使用spring框架完全访问我的neo4j图形?我正在尝试一些示例,但它似乎无法正常工作,因为spring创建的某些元数据不存在。 编辑:例如,我有这个错误当我试图通过它的id访问一个节点时,即

  • 我在Oracle中有下面的SQL语句,这让我有些头疼。如果Oracle表中的值为null,我尝试返回一个空几何体,但是它失败了,出现以下错误: 错误 ** ORA-29532:Java调用被unpper终止Java异常:java.lang.NullPointerExcema ORA-06512: at"MDSYS.SDO_UTIL",第2421行ORA-06512: at"MDSYS.SDO_UT

  • 我有两张桌子 文件夹JAVA 虚拟系统。JAVA 异常跟踪的片段 那么我到底做错了什么??顺便说一下,我使用的是