如何在不从android创建子节点的情况下将字符串值填充到实时firebase数据库?

如何在不从android创建子节点的情况下将字符串值填充到实时firebase数据库?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我想向实时firebase数据库添加一个字符串值,其中firebase UID是名称,字符串是值。当我使用下面的代码时,它将UID设置为父节点,并将值设置为子节点 ReferralCode ReferralCode=新的ReferralCode(refCode);databaseReference.child(“referralCodes”).child(userId).setValue(referralCode) 我希望将这些值填充为第二个值。但是通过上面的代码,我得到了第一个结果。之后我将

我想向实时firebase数据库添加一个字符串值,其中firebase UID是名称,字符串是值。当我使用下面的代码时,它将UID设置为父节点,并将值设置为子节点

ReferralCode ReferralCode=新的ReferralCode(refCode);databaseReference.child(“referralCodes”).child(userId).setValue(referralCode)


我希望将这些值填充为第二个值。但是通过上面的代码,我得到了第一个结果。之后我将搜索引用代码,因此我认为如果将这些值填充为第二个值,以避免访问子节点,这将耗费大型数据库实体的时间。

当您使用您创建的
ReferralCode
模型
并将其与
.setValue一起使用时(referralCode)
然后
Firebase
将自动将其创建为具有
referralCode.java
所具有属性的子级。示例如下:

public class Restaurant {
    private int code;
    private int type;
    private String name;
}
因此,如果我创建一个变量
Restaurant tempRest=new Restaurant(111,“Restoran DM”,0)
并像这样使用它:

database.child("restaurants").child("1st restaurant").setValue(tempRest);
restaurants
     1st restaurant:
          code: 111
          name: "Restoran DM"
          type: 0
String someValue = "some value";
database.child("restaurants").child("awpjawpdaw").setValue(someValue);
Firebase将创建如下内容:

database.child("restaurants").child("1st restaurant").setValue(tempRest);
restaurants
     1st restaurant:
          code: 111
          name: "Restoran DM"
          type: 0
String someValue = "some value";
database.child("restaurants").child("awpjawpdaw").setValue(someValue);
但是如果在
setValue()
中使用
String
,如下所示:

database.child("restaurants").child("1st restaurant").setValue(tempRest);
restaurants
     1st restaurant:
          code: 111
          name: "Restoran DM"
          type: 0
String someValue = "some value";
database.child("restaurants").child("awpjawpdaw").setValue(someValue);
它会给你你想要的。例如,我使用了:

DatabaseReference database = FirebaseDatabase.getInstance().getReference();
String refCode = "1231231";
database.child("restaurants").child("wadawdapwodawp").setValue(refCode);
下面是数据库中发生的情况:


不如试试databaseReference.child(“referralCodes”).child(userId).setValue(refCode);如上所述,databaseReference.child(“referralCodes”).child(userId).setValue(refCode);创建名为refferalCode的子节点,与第一个实体相同。refferalCode是您创建的模型,可能具有名为refferalCode=1234567的字段。使用refferalCode作为变量类型创建后,将自动创建具有java类所具有结构的子节点。但是如果您发送将值设置为字符串/Int或其他形式,然后它应该使用键(userId):value(refCode)。我说refCode是因为我在上面的一行中看到您将其用作RefferalCode构造函数的参数。因此我的代码行与您的代码行不同。这里没有足够的内容。什么是
ReferralCode
?还有:什么是“我希望将值填充为第二个值。但是通过上面的代码,我得到了第一个结果”?请阅读以增加我们提供帮助的机会。我刚刚测试了我上面的声明,结果很有效。我将发布一个答案:)谢谢!很高兴我能帮上忙。愉快的编码!有没有更简单的方法可以让你推荐搜索“refCode”字符串值,检查它是否存在?我不太明白你的问题,你能更好地解释一下你的意思吗?如果我理解正确,你想“循环”吗“通过数据库子项并检查是否存在具有特定值的子项。为此,您可以使用以下查询:Query refQuery=database.child(“referealcodes”).orderByValue().equalsTo(STRING).addListenerForSingleValueEvent(new ValueEventListener())。。。。这样,它将搜索数据库并检查是否有一个值等于提供的字符串。如果找到该对象,则将该对象作为DataSnapshot获取,否则DataSnapshot将为空。