代码之家  ›  专栏  ›  技术社区  ›  LizG

android:添加新节点

  •  0
  • LizG  · 技术社区  · 8 年前

    需要在父节点下添加一个新的“Completed”节点,该节点最终将包含骑乘结束时节点“Requests”的所有信息。

    所以基本上,我需要先创建“Completed”节点,但不添加它。

    数据库

    {
      "Requests" : {
        "iowpxU6WKUWpzWJyfssSoOVCPFj2" : {
          ".priority" : "f8118c3k3v",
          "destination" : "221 Prince William St",
          "details" : {
            "driver" : "nYIAHSYimJMHbMkXqDt9PQ0U3Nf2",
            "location" : "27 Horsfield St",
            "request status" : "accepted",
            "ridePrice" : 3.75,
            "rideStatus1" : "arrived at pickup",
            "rideStatus2" : "rider in vehicle",
            "rideStatus3" : "destination bound",
            "rideStatus4" : "arrived at destination",
            "rider" : "iowpxU6WKUWpzWJyfssSoOVCPFj2",
            "riderPaid" : "true"
          },
      "Users" : {
        "Drivers" : {
          "nYIAHSYimJMHbMkXqDt9PQ0U3Nf2" : {
            "driver" : "nYIAHSYimJMHbMkXqDt9PQ0U3Nf2",
            "email" : "driver@me.com",
            "name" : "driver",
            "password" : "whatever",
            "phone" : "5551212",
            "rates" : "0"
          }
        },
        "Riders" : {
          "iowpxU6WKUWpzWJyfssSoOVCPFj2" : {
            "avatarUrl" : "",
            "email" : "rider@me.com",
            "name" : "rider",
            "password" : "whatever",
            "phone" : "5551313",
            "rates" : "0",
            "riderId" : "iowpxU6WKUWpzWJyfssSoOVCPFj2"
          }
        }
      }
    }

    添加新节点

    private void addNewNode() { // TODO: ........ NOT ADDING NEW NODE :-| ..........
    
        Toast.makeText(this, "addNewNode", Toast.LENGTH_LONG).show();
    
        DatabaseReference newNode = FirebaseDatabase.getInstance().getReference("Completed");
        newNode.child(riderId).push().addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Toast.makeText(DriverTripDetail.this, "addNewNode: onDataChange", Toast.LENGTH_LONG).show();
            }
    
            @Override
            public void onCancelled(DatabaseError databaseError) {
    
            }
        });
    }
    

    1 回复  |  直到 8 年前
        1
  •  1
  •   Frank van Puffelen    8 年前

    Firebase数据库在路径上存储值。如果没有值,则路径不存在。

    您的代码创建对 /Completed/$pushID

    newNode.child(riderId).push().setValue(true)