Firebase 更新正在制作新的,除了最后一个字符外具有相同的 id

2024-01-02

我正在使用此代码来更新 Firebase 上的数据,但它会生成新的数据。我尝试了很多代码,除了最后一个字符之外,它使用相同的密钥制作新的代码。

我按照 Firebase 网站的推荐使用了这个,但它不起作用。我创建了一个新的,下次更新时:

    Map<String, Object> childUpdate = new HashMap<>();
childUpdate.put("/masjeds/" + masjed.getId(), masjed.toMap());
reference.updateChildren(childUpdate);

这段代码做了同样的事情

     final FirebaseDatabase database = FirebaseDatabase.getInstance();
    masjeds = database.getReference("masjeds");

        reference.child(masjed.getId()).setValue(masjed, new DatabaseReference.CompletionListener() {
        @Override
        public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
         //   Toast.makeText(MyMasjedsActivity.this, databaseError.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });

Masjed 类是普通的 java 对象

public class Masjed {
private String userID;
private String id;
private String name;
private String address;
private String phone;
private boolean matloopEmam;

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getUserID() {
    return userID;
}

public void setUserID(String userID) {
    this.userID = userID;
}

public boolean isMatloopEmam() {
    return matloopEmam;
}

public void setMatloopEmam(boolean matloopEmam) {
    this.matloopEmam = matloopEmam;
}


public Masjed(String name, String address, String phone) {
    this.name = name;
    this.address = address;
    this.phone = phone;
}

public Masjed() {

}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getAddress() {
    return address;
}

public void setAddress(String address) {
    this.address = address;
}

public String getPhone() {
    return phone;
}

public void setPhone(String phone) {
    this.phone = phone;
}

public Map<String, Object> toMap() {
    Map<String, Object> map = new HashMap<>();
    map.put("name", name);
    map.put("address", address);
    map.put("phone", phone);
    map.put("id", id);
    map.put("userID", userID);
    return map;
}

}

id是我假设的问题push.getkey并将其作为ID 然后使用push.setValue(masjed)将使用相同的密钥 事实证明,情况并不总是如此,当我使用它时,钥匙会发生变化,它不存在,因此它创建了一个新的钥匙,对我有帮助的答案是切斯特答案


我希望这有帮助,在我的宠物项目中使用它(它不是清洁解决方案,但它有效):

masjeds = database.getReference("masjeds");

ValueEventListener listener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) { 
                masjedKey = dataSnapshot1.getKey(); // This is a member variable
                masjed = dataSnapshot1.getValue(Masjed.class); // This is a member variable
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
};
masjeds.orderByChild("id").equalTo(masjed.getId()).addValueEventListener(listener);

//Use your Map to update each value this is just an example
masjeds.child(masjedKey).child("name").setValue("John"); //you can add event listener if you want to see if it's completed, but it works without the events
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firebase 更新正在制作新的,除了最后一个字符外具有相同的 id 的相关文章

随机推荐

  • 如何将字体真棒图标添加到输入类型文本中[重复]

    这个问题在这里已经有答案了 我尝试将字体很棒的图标转换为文本输入类型 但可以得到想法 但它不起作用 它将如下图所示 search location padding 9px 10px 8px 10px background fff color
  • 如何抑制 Swift 中的特定警告

    我有一个 Swift 函数 执行如下操作 func f gt Int switch WORDSIZE case 32 return 1 case 64 return 2 default return 0 Because WORDSIZE是一
  • System.Convert.ToSingle() 问题,(1.5) 与 (1,5)

    我正在用 C 编写程序来在模型格式之间进行转换 模型格式将数字作为文本 例如 0 136222 我可以使用 System Convert ToSingle 将其转换为浮点数 但在德国 我们使用逗号作为小数点 0 136222 System
  • 使用 PHPUnit 达到 100% 代码覆盖率

    我一直在为一个项目创建测试套件 虽然我意识到获得 100 的覆盖率并不the指标应该努力达到 代码覆盖率报告中有一个奇怪的地方 我想对此进行一些澄清 看截图 因为被测试方法的最后一行是return 最后一行 只是一个右括号 显示为从未执行
  • 如何从Java调用C++?

    我想从 Java 调用 C 方法 我读过有关 JNI 的内容 但我不知道如何获取所有库文件以及应该将其保存在哪里以便从命令行运行程序 有没有办法从 Eclipse 本身调用 C 方法 因为我用它来运行 Java 类 虽然我过去使用过 JNI
  • CSS div 圆角

    我正在尝试执行以下操作 这是我现在所得到的 但它没有正确渲染 有谁知道我该如何解决这个问题 CSS Curved Corners bl background url bl gif 0 100 no repeat background col
  • 在 ImageView 中翻转和更改图像

    我正在开发一个工作简单且工作效率很高的应用程序 但我有一个地方看起来不太好 那就是翻转动画 我想要的是 我有一个 Button 和按钮下方的 ImageView 单击按钮时 我想制作一个动画 看起来 ImageView 已翻转 并且下一个图
  • ruby 中的适配器模式:访问实例变量

    我正在学习适配器模式 https www sitepoint com using and testing the adapter design pattern 在红宝石中的实现 我想访问适配器模块定义中的实例变量 看一下下面的代码 modu
  • Folium 根据值将标记放入标记簇和图层中

    因此 我正在处理商店数据集 每个商店都有其纬度 经度 名称和类别 由于我们谈论的是数百甚至数千家商店 因此我正在使用标记集群 并且它们工作正常 现在 我还需要根据它们的类别将这些商店设置在不同的图层中 这样当我单击 电子商店 时 我只会在地
  • KornShell Printf - 填充字符串

    我正在尝试编写一个 KornShell ksh 函数 该函数使用 printf 将字符串填充到特定宽度 例子 Call padSpaces Hello 10 Output Hello 我目前有 padSpaces WIDTH 2 FORMA
  • Android - 导入 ViewPager2 库时程序类型已存在 com.transition.R

    Gradle正在抛出程序类型已存在 androidx transition R 导入后androidx viewpager2 viewpager2 1 0 0 beta02 implementation androidx viewpager
  • 如何在 PWA 中更改 Android 导航栏颜色?

    当我在 Android 主屏幕 渐进式 Web 应用程序 上添加页面时 我想更改 Web 上 Android 导航栏的颜色 但是当我打开 PWA 时 Android 导航栏的颜色为黑色 我想要更改颜色为白色 在清单中 您可以更改主题的颜色
  • 无法使用 MPMusicPlayerMediaItemQueueDescriptor 设置 MPMusicPlayerController 队列

    此代码导致沉默 let query MPMediaQuery songs let result query items guard let items result items count gt 0 else return let song
  • React 组件交互和全局状态变化

    我对 React 很陌生 只是尝试一下 我想知道有哪些常见模式或用于处理组件之间通信的内置库 例如 我有一个输入组件和一个 列表 组件 该组件根据输入控制器中的内容从服务器进行更新 想想一个自动完成框 既然组件有表示逻辑 那么如果两者不能
  • 错误消息“操作正在进行中”是什么意思?

    当尝试使用以下命令打开文件时 fd fopen majestic files majestic record txt w 我收到以下错误消息 b Warning b fopen majestic files majestic record
  • 发生数据库错误错误号:1062

    我尝试使用 sql 为我的 CI 执行一次更新三个表的选项 但为什么它仍然错误 这是错误警告 A Database Error Occurred Error Number 1062 Duplicate entry 0 for key 1 U
  • 如何在java中重复播放音频文件

    我怎样才能让音频文件连续重复 现在音乐只播放一次 仅此而已 我试图让声音一遍又一遍地重复 我必须以其他方式获取音频文件还是有更简单的方法 Code import java io File import java io FileInputSt
  • Python 的 itertools.repeat 的目的是什么?

    对于我能想到的 Python 的每一种用途itertools repeat http docs python org py3k library itertools html highlight repeat itertools repeat
  • 如何让 Eclipse Oxygen 在 Java 9 上运行

    我拼命尝试让 Eclipse Oxygen 在 Mac OSX 上运行 Java 9 但似乎失败了 到目前为止我已经完成的步骤 在 Library Java JavaVirtualMachines jdk 9 jdk 中安装了 Java 9
  • Firebase 更新正在制作新的,除了最后一个字符外具有相同的 id

    我正在使用此代码来更新 Firebase 上的数据 但它会生成新的数据 我尝试了很多代码 除了最后一个字符之外 它使用相同的密钥制作新的代码 我按照 Firebase 网站的推荐使用了这个 但它不起作用 我创建了一个新的 下次更新时 Map