AppEngine + Datastore + Objectify:Http Request返回不一致的响应

时间:2014-11-11 21:36:16

标签: google-app-engine key google-cloud-datastore objectify

我正在将AppEngine服务器作为我的Android应用程序的后端实现。我使用数据存储区,我通过Objectify服务查询它,并使用我通过URL调用的端点。

我有一个具有以下属性的实体用户:

@Id
Long id;

/**
 * Name or nickname of the user
 */
public String name;

@Index
public String email;

@JsonIgnore
List<Key<User>> friends;

public User()
{
    devices = new ArrayList<String>();
    friendsWithKey = new ArrayList<Key<User>>();
}

public static User findRecordById(Long id)
{
   return ofy().load().type(User.class).id(id).now();
}


   @ApiMethod(name = "friends", httpMethod = "GET", path = "users/{userId}/friends")
public JSONObject getFriends(@Named("userId") String userId)
{
    User user = User.findRecordById(Long.parseLong(userId));

    JSONObject friendsObject = new JSONObject();
    JSONArray jsonArray = new JSONArray();
    JSONObject friend;
    List<User> userList = new ArrayList<User>();

    if (user.friendsWithKey != null)
    {
        for (Key<User> id : user.friendsWithKey)
        {
            friend = new JSONObject();
            User user1 = User.findRecordById(id.getId());
            userList.add(user1);
            friend.put("name", user1.name);
            friend.put("email", user1.email);
            friend.put("id", user1.id);user1.lastTimeOnline.getTime());
            jsonArray.add(friend);
        }
        friendsObject.put("friends", jsonArray);
    }
    return friendsObject;
}

它有时只返回一部分朋友。这很奇怪,我没有得到我可能出错的地方。如果我从数据库中获取User对象,则它已经有一个错误的Key值列表。但是如果我通过控制台查看数据库,我可以看到所有被添加为朋友的用户。 我真的需要修复这个bug。请帮忙。

这很奇怪,因为它只是偶尔发生一次,并且在各方面都是不确定的。

0 个答案:

没有答案