重新发布此问题,因为我第一次没有收到任何回复。 Parse似乎没有任何简单的方法可以联系他们(这令人沮丧),所以我真的希望这里有人可以提供帮助。
我目前正在使用Parse创建一个消息传递应用。除了标准的ParseUser,Chatroom和Message之外,我还有两个基本的ParseObject。聊天室包含指向聊天室中两个用户的指针。消息包含消息的内容,指向发布消息的用户的指针以及指向聊天室的指针。
首先,我创建了当前用户所在的所有聊天室的列表。然后,我正在尝试在所有这些聊天室中创建最新消息的第二个列表(我已经无法创建一个聊天室没有先发送至少一条消息)。
我的代码如下所示:
TextView mostRecent = (TextView) row.findViewById(R.id.mostRecent);
Date dt1 = null;
ParseQuery lastMessage = ParseQuery.getQuery("Message");
ParseObject chatroom = (ParseObject) roomList.get(position);
Log.w("Chatroom ObjectID...", room.getObjectId());
try {
lastMessage.whereEqualTo("chatroom", chatroom.fetchIfNeeded());
List<ParseObject> allMessages = lastMessage.find();
Log.w("# of Messages...", "Size of the list: " + allMessages.size() + ", Count of query: " + allMessages.count());
if (allMessages.size() > 0) {
mostRecent.setText((String) theList.get(theList.size() - 1).get("content"));
dt1 = allMessages.get(allMessages.size() - 1).getCreatedAt();
}
} catch (ParseException err) {
err.printStackTrace();
Log.w("PARSE ERROR", err.getMessage());
}
此代码适用于每个聊天室,其中当前用户是在该聊天室中创建聊天室和消息的用户。但是,每当我有不同的用户尝试启动聊天室并向原始用户发送消息时,代码就会失败。
要清楚,第二个用户成功创建了聊天室和消息。我已经验证聊天室成功添加到原始用户的聊天室列表中,并且消息包含指向正确聊天室的指针。但是,无论出于何种原因,日志显示列表大小为0,计数为0.我甚至尝试在原始用户的帐户上查询第二个用户的确切消息,并声称该消息不存在。
有什么想法吗?这可能与ACL有关吗?提前谢谢!
注意:我已确认两个用户都正确包含在消息的ACL中。是什么赋予了?为什么这不起作用?
答案 0 :(得分:0)
您需要等待查询才能获取数据。
lastMessage.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> allMessages, ParseException e) {
if (e == null) {
Log.w("# of Messages...", "Size of the list: " + allMessages.size() + ", Count of query: " + allMessages.count());
} else {
Log.w("Exception thrown", e.getMessage());
}
}
}