gpt4 book ai didi

java - 数据上传到错误的节点。代码有什么问题吗?

转载 作者:太空宇宙 更新时间:2023-11-04 11:15:18 25 4
gpt4 key购买 nike

我必须将驱动程序的当前位置上传到具有登录驱动程序 Uid 的busid(“1”或“2”)节点。但是,问题是它总是将位置上传到节点“1”,即使 Uid 存在于节点“2”下。我需要帮助来查找哪个节点(“1”或“2”)将 Uid 作为子节点。

int totalbusno = 2;
String driverbusid = "1";
mDatabaseReference = FirebaseDatabase.getInstance().getReference();
busReference = mDatabaseReference.child("Busno");
lat = location.getLatitude();
lon = location.getLongitude();
mUser = FirebaseAuth.getInstance().getCurrentUser();
assert mUser != null;
userid = mUser.getUid();



busReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(int i = 1; i <= totalbusno; i++){
for(DataSnapshot ds : dataSnapshot.getChildren()){
if(ds.child(String.valueOf(i)).hasChild(userid)){
driverbusid = String.valueOf(i);
break;
}
}
}
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

Submitdriverlocation submitdriverlocation = new Submitdriverlocation(lat, lon);
mDatabaseReference.child("Busno").child(driverbusid).child(userid).child("location").setValue(submitdriverlocation).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast.makeText(DriverMapsActivity.this, "Location Updated", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(DriverMapsActivity.this, "Update Failed", Toast.LENGTH_SHORT).show();
}
}
});

Database Structure

最佳答案

您有驱动程序 ID 的常量值,请在代码顶部检查其 String driverbusid = "1";

这就是为什么您的数据始终使用键 1 推送到节点上的原因。

// This will always refer to node with key 1
mDatabaseReference.child("Busno").child(driverbusid)

并更新您的 for 循环。

   for(int i = 1; i < totalbusno + 1; i++) 

您的 for 循环应该执行下一个值,即 2。

关于java - 数据上传到错误的节点。代码有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45521281/

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