我正在尝试在Firebase中创建一个新数据并在用户上更新它,但在尝试建立关系时我总是遇到错误。我附上了节点和一些代码的图像。
和代码:
// 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
答案 0 :(得分:1)
最有可能发生的事情是您的密钥包含Firebase不允许您在节点密钥中使用的某些字符。
即:
一个简单的String.replace()
应该可以在这里工作。