Firebase数据库永远不会更新特定子项中的我的值

时间:2019-08-29 19:16:49

标签: android firebase firebase-realtime-database

我正在尝试使用以下代码更新特定孩子中的值。但是它不会更新该值,而是创建新节点并将该值插入该节点下。请检查下面的代码和firebase结构图片:

mach_vm_region

下面显示了火力地堡的图像:

firebase_wanted_change_value_here.jpg

instead_change_value_here.jpg

等待解决方案。谢谢进阶

  

注意:我也使用updatechildren方法,但是它会删除所有Land_Info数据,然后将此值添加为新的引用

  referenceUpdatedLand=FirebaseDatabase.getInstance().getReference("Land_Info");

                Query queryUpdated =referenceUpdatedLand.orderByChild("Khatian").equalTo(landkhatin);

                Toast.makeText(VehicleBookedLandActivity.this, ""+landkhatin, Toast.LENGTH_SHORT).show();


                queryUpdated.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren())

                        {
                            int vehicleaviable= Integer.parseInt(avaiablecount);

                            String land_vehicle_type_aviable ="land_bike_available";
                            nowVehicleAvai=vehicleaviable-1;

                            String nowVehicleTypeAvaiable= String.valueOf(nowVehicleAvai);



                            HashMap<String, Object> map = new HashMap<>();
                            //map.put(land_vehicle_type_aviable,nowVehicleTypeAvaiable );
                            referenceUpdatedLand.child(land_vehicle_type_aviable).setValue(nowVehicleTypeAvaiable);

                            Intent intent = new Intent(getApplicationContext(), VehicleNavActivity.class);
                            startActivity(intent);
                            finish();


                            Toast.makeText(getApplicationContext(), "Sucessfull", Toast.LENGTH_LONG).show();
                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });

1 个答案:

答案 0 :(得分:1)

我认为您的更新查询有误,请进行以下更改并尝试:

referenceUpdatedLand=FirebaseDatabase.getInstance().getReference("Land_Info");

                Query queryUpdated =referenceUpdatedLand.orderByChild("Khatian").equalTo(landkhatin);

                Toast.makeText(VehicleBookedLandActivity.this, ""+landkhatin, Toast.LENGTH_SHORT).show();


                queryUpdated.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren())

                        {
                            int vehicleaviable= Integer.parseInt(avaiablecount);

                            String land_vehicle_type_aviable ="land_bike_available";
                            nowVehicleAvai=vehicleaviable-1;

                            String nowVehicleTypeAvaiable= String.valueOf(nowVehicleAvai);



                            HashMap<String, Object> map = new HashMap<>();
                            //map.put(land_vehicle_type_aviable,nowVehicleTypeAvaiable );
                            referenceUpdatedLand.child(dataSnapshot1.getKey())child(land_vehicle_type_aviable).setValue(nowVehicleTypeAvaiable); //change

                            Intent intent = new Intent(getApplicationContext(), VehicleNavActivity.class);
                            startActivity(intent);
                            finish();


                            Toast.makeText(getApplicationContext(), "Sucessfull", Toast.LENGTH_LONG).show();
                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });