如何在Firebase数据库中摆脱自动生成的ID?

3

你好,我是一名新手,正在学习 Android Firebase 技术,在使用过程中遇到了问题。当我向数据库添加新数据时,其中一个子项的根节点会得到一个新的 ID。

如下图所示,在 clinic 下面有一个 ID,我想要去掉它。

enter image description here

我希望我的数据能够按照以下方式添加,每次添加新的诊所时都应该添加在 general 的下方。

myRef = FirebaseDatabase.getInstance().getReference().child("clinic").push();

我刚刚在我的数据库引用末尾添加了push()。
myRef.child(typ).child(userID).child("clinic_name").setValue(name);

myRef.child(typ).child(userID).child("total_docs").setValue(total_docs);

myRef.child(typ).child(userID).child("working_hrs").setValue(clinic_wrk_hrs);

通过这种方式,我正在将数据添加到数据中。唯一想要的是摆脱那个奇怪的额外ID。我该怎么做呢?


2
您在问题中包含了JSON树的图片。请将其替换为实际的JSON文本,您可以通过单击 Firebase数据库控制台 中的“导出JSON”链接轻松获取它。将JSON作为文本使其可搜索,使我们能够轻松地使用它来测试您的实际数据并在我们的答案中使用它,总的来说这是一件好事。它还将允许您精确地显示您希望代码输出的JSON内容。 - Frank van Puffelen
3个回答

3

该id不是自动生成的ID,而是由push()方法推送的ID。要摆脱它,您不需要使用push方法。您需要更改此代码行:

myRef = FirebaseDatabase.getInstance().getReference().child("clinic").push();

使用

myRef = FirebaseDatabase.getInstance().getReference().child("clinic");

但是如果我删除 push() 方法,那么我就无法将新的诊所添加到一般节点中,而只能更新相同的诊所。#Alex Mamo - Kaushal Topinkatti
在这种情况下,您需要保留它。您的问题是如何摆脱生成的 ID。您无法删除该 ID 并具有相同的行为。 - Alex Mamo

0

迟做总比不做好:

我曾经遇到过同样的问题,我相信你想要使用的是child.update或child.set而不是child.push

这里有一个使用Python SDK firebase_admin的示例:

root = db.reference(path='/', app=app)  # app was previously created

# PUSH
root.child(test).push({'name': 'John'})
# Will create something like
# ./
# |--test
# |------FIREBASE_ID
# |-----------------name: "John"

# UPDATE / SET
root.child(test).update({'name': 'John'})  # or .set({...})
# Will create something like
# ./
# |--test
# |------name: "John"

0

要删除自动生成的键,只需删除push命令..就像下面这样

mRef=FirebaseDatabase.getInstance().getReference("clinic");
mRef.child("timestamp").setValue(clinic_address);
mRef.child("timestamp").setValue(clinic_name);

如果它起作用了,请告诉我!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接