我正在将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。请帮忙。
这很奇怪,因为它只是偶尔发生一次,并且在各方面都是不确定的。