gpt4 book ai didi

java - Set.value 用新数据替换现有数据

转载 作者:行者123 更新时间:2023-12-02 05:49:43 25 4
gpt4 key购买 nike

我正在尝试将一些值写入 Firebase 数据库,但是当写入新值时,旧值会被删除吗?

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child(userId).child("Messages");
DatabaseReference userref= FirebaseDatabase.getInstance().getReference().child("Users").child(userId);
userref.setValue(Username);
DatabaseReference keyReference = databaseReference.push();
User user=new User("Mine message is here","Sender");
keyReference.setValue(user);

最佳答案

在您共享的代码中,您调用了DatabaseReference.push()。每次调用 push 时,Firebase 都会为新的唯一位置生成一个 key 。因此,如果您随后对该新引用调用 setValue,您将编写一个全新的值。

<小时/>

setValue 方法始终将 DatabaseReference 中的任何内容替换为您提供的值。但由于新位置没有任何值(value),因此您只是编写一个全新的用户。

如果您想要更新现有节点而不替换现有值,则必须在较低节点上调用setValue(),或者调用updateChildren ().

例如,要更新 /Users/$userId/username 下的 username 属性,您可以执行以下操作:

userref.child("username").setValue("New username");

这将使 /Users/$userId 下的任何其他子节点保持不变。

如果您想更新/Users/$userId下的多个子项,您可以多次调用setValue:

userref.child("username").setValue("New username");
userref.child("location").setValue("San Francisco");

或者您可以将值放入 Map 中并将其传递给 updateChildren:

Map<String,Object> values = new HashMap<>();
values.put("username", "New username");
values.put("location", "San Francisco");
userref.updateChildren(values);

关于java - Set.value 用新数据替换现有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56060676/

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