gpt4 book ai didi

android - 如何修改 Firebase 中的特定值?

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

我在 Firebase 数据库中有这些数据:

Negocios:
-KjfCu56lFZCybYldBZy
lugarReference: "Restaurante"
numeroMesas:39
password:"pass123"
user:"user123"
user_id:"usr_1"

我有两个应用程序连接到 Firebase 中的一个项目,一个上传餐厅预订数据,另一个在 RecyclerView 中显示预订。

在第一个应用程序中,一旦我进行了预订,它必须将 numeroMesas 值减一,另一个应用程序应显示对此键的任何更改。

在预订应用程序中,我有这段代码是我根据这个问题做的:

Update specific keys using Firebase for Android

它应该修改numeroMesas的值,但它没有:

 mReference.child("Negocios").addValueEventListener(new ValueEventListener() {

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
Lugar lugar = postSnapshot.getValue(Lugar.class);
if(nombre_lugar.equals(lugar.getUser_id())){

DatabaseReference numMesasReference = mReference.child(dataSnapshot.getKey()).child("numeroMesas");
numMesasReference.setValue(lugar.getNumeroMesas() - 1);
}
}
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

接下来要做的是:

Negocios:
-KjfCu56lFZCybYldBZy
lugarReference: "Restaurante"
numeroMesas:39
password:"pass123"
user:"user123"
user_id:"usr_1"
-Negocios
-KjfCu56lFZCybYldBZy
numeroMesas:39

如何修复?预订后我需要减去一个...你好!

最佳答案

使用 postSnapshot.getRef(),您可以获得对此快照的源位置的引用。那么下一步是向该引用添加一个子项,该引用将是“numeroMesas”,这是您要修改的键。

就这么简单,代码就是这样。

mReference.child("Negocios").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
Lugar lugar = postSnapshot.getValue(Lugar.class);
if(nombre_lugar.equals(lugar.getUser_id())){

DatabaseReference numMesasReference = postSnapshot.getRef().child("numeroMesas");
numMesasReference.setValue(lugar.getNumeroMesas() - 1);

}
}
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

P.S:如果你想通过保留只减一次,addValueEventListener() 是行不通的,它会循环减多次。使用 addListenerForSingleValueEvent() 代替 addValueEventListener()

顾名思义,这个监听器适用于任何位置的数据的单一变化。

关于android - 如何修改 Firebase 中的特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43881990/

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