gpt4 book ai didi

android - 按给定条件更改 Firebase 数据库节点中的值

转载 作者:搜寻专家 更新时间:2023-11-01 08:30:39 25 4
gpt4 key购买 nike

我使用 Firebase 数据库实现了某种聊天应用程序。一切都准备就绪并开始工作。现在我正在尝试实现在用户名用新用户名更改所有消息后的功能。消息结构如下所示:

enter image description here

我成功使用了这段代码:

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”节点更改为每条消息。任何人都可以帮助如何只提出一个请求?

最佳答案

Andre 提供的链接有它的要点:通过使用单个 multi-location update ,您可以在一个电话中发送整个更新。这是 Java 中的相同方法:

mDatabase
.child(RequestParameters.FB_CHILD_MESSAGES) //messages
.orderByChild(RequestParameters.FB_CHILD_USERS_UID)
.equalTo(mUser.getUid())
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Map<String,Object> updates = new HashMap<String,Object>();
for (DataSnapshot messageSnapshot : dataSnapshot.getChildren()) {
ChatMessage message = messageSnapshot.getValue(ChatMessage.class);

updates.put(
RequestParameters.FB_CHILD_MESSAGES+"/"+
message.getMessageNodeKey()+"/"+
RequestParameters.FB_CHILD_MESSAGES_USERS,
newUserName
);
}
mDatabase.updateChildren(updates);
}

@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
}

关于android - 按给定条件更改 Firebase 数据库节点中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41237339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com