【发布时间】:2016-12-20 07:56:09
【问题描述】:
我使用 Firebase 数据库实现了某种聊天应用。一切都已设置并正常工作。现在我正在尝试实现在用户名用新用户名更改所有消息后的功能。消息结构如下所示:
我用这段代码成功了:
private void changeCurrentUserMessagesUserName(final String newUserName) {
mDatabase.child(RequestParameters.FB_CHILD_MESSAGES) //messages
.orderByChild(RequestParameters.FB_CHILD_USERS_UID) //messageUserUid
.equalTo(mUser.getUid())
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot messageSnapshot : dataSnapshot.getChildren()) {
ChatMessage message = messageSnapshot.getValue(ChatMessage.class);
mDatabase.child(RequestParameters.FB_CHILD_MESSAGES) //messages
.child(message.getMessageNodeKey())
.child(RequestParameters.FB_CHILD_MESSAGES_USERS) //messageUser
.setValue(newUserName);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
//do nothing
}
});
}
但是,如果 Firebase 中有 100 条属于当前用户的消息,则此代码将向 Firebase 发出 100 个请求,以将“messageUser”节点更改为每条消息。 任何人都可以帮助如何只提出一个请求?
【问题讨论】:
标签: android firebase firebase-realtime-database