Firebase数据被覆盖

时间:2016-05-03 15:11:00

标签: android firebase firebase-realtime-database

每当我的位置发生变化时,我都希望它将一个航点添加到相同的根id,但每次它只是覆盖根目录中的航点。 已将.setValue更改为.updateChildren但仍然没有运气。

Firebase mainRef = null;
private void saveToFirebase() {

    while (isFirstTime) {
        // Generates root id
        mainRef = myFirebaseRef.push();
        isFirstTime = false;
    }


    // Generates new id for waypoint
    Firebase wayRef1 = mainRef.push();
    String waypointKey = wayRef1.getKey();


    // Create waypoint post
    Map<String, Object> newPost = new HashMap<String, Object>();
    newPost.put("latitude", mLastLocation.getLatitude());
    newPost.put("longitude", mLastLocation.getLongitude());


    // POST HOLDER
    Map<String, Object> waypointHolder = new HashMap<>();
    waypointHolder.put(waypointKey, newPost);


    // PARENT OF WAYPOINTHOLDER
    Map mParent = new HashMap();
    mParent.put("timeStamp", mLastUpdateTime);
    mParent.put("waypoints", waypointHolder);
    mainRef.updateChildren(mParent);

}

1 个答案:

答案 0 :(得分:0)

看起来您正在创建航点值的散列图,但在添加新值之前,您不会将现有值加载到散列映射中。因此,您每次都要创建一个新的hashmap,向其添加一个条目,然后将其发布到firebase。这导致每次存储在firebase中时都有一个路径点的哈希映射。