Android Firebase两个节点updateChildren,失败:DatabaseError:路径中的令牌无效

时间:2017-06-09 02:23:44

标签: android firebase firebase-realtime-database

我正在尝试在Firebase中创建一个新数据并在用户上更新它,但在尝试建立关系时我总是遇到错误。我附上了节点和一些代码的图像。 enter image description here

和代码:

        // Create a reference that point to transportador and the currenUser
    DatabaseReference wayPointRef;
    // Create a reference to the vehicle node db
    final DatabaseReference refVehicle = mDatabase.getReference("vehiculo");
    // Create a reference to the transportador node db
    final DatabaseReference refTrans = mDatabase.getReference("transportador");
    // Take the key create of the new vehicle
    final String key = refVehicle.push().getKey();
    // Show the key
    KLog.a("key of the new vehicle : " + key);

    mainHandler.post(new Runnable() {
        @Override
        public void run() {
            sweetAlertDialog = new SweetAlertDialog(actvty, SweetAlertDialog.PROGRESS_TYPE);
            sweetAlertDialog.getProgressHelper()
                    .setBarColor(Color.parseColor("#00C800"));
            sweetAlertDialog.setTitleText("xxxxxxx");
            sweetAlertDialog.setContentText("Creando Vehiculo");
            sweetAlertDialog.setCancelable(false);
            sweetAlertDialog.show();
        }
    });
    wayPointRef = refTrans.child(currentUserKey).child("vehiculos");
    vehicle = new Vehiculo(key, vehiculo, carroceria, placa, modelo, pesoMax, volumen, largo,
            alto, ancho);
    Map<String, Object> vehicleValues = vehicle.toMap();

    Map<String, Object> childUpdates = new HashMap<>();
    childUpdates.put(refVehicle + "/" + key, vehicleValues);
    childUpdates.put("/" + "vehiculos/" + key, vehicleValues);
    //mDatabase.updateChildren(childUpdates);

    final String finalCurrentUserKey = currentUserKey;
    wayPointRef.updateChildren(childUpdates, new DatabaseReference.CompletionListener() {
        @Override
        public void onComplete(final DatabaseError databaseError, DatabaseReference databaseReference) {
            if (databaseError != null){

这是日志答案:

  

06-08 21:09:56.794 7671-9043 / xxxxxxxxxx W / RepoOperation:   updateChildren at   / transportador / lONs9g5nLON1Ql4Fs24REuz8T2z2 / vehiculos失败:   DatabaseError:路径06-08 21:09:56.854中的无效标记   7671-7671 / xxxxxxxxxxxx A / TAG:[(FirebaseServiceManagerT.java:277)#run   ]                                                              Param [0] = createVehicle:失败                                                              参数1 = -999

1 个答案:

答案 0 :(得分:1)

最有可能发生的事情是您的密钥包含Firebase不允许您在节点密钥中使用的某些字符。

即:

  • 。 (周期)
  • $(美元符号)
  • [(左方括号)
  • ](右方括号)
  • #(哈希或井号)
  • /(正斜线)

一个简单的String.replace()应该可以在这里工作。