I wanted to put a unique id every time when users signups into my apps. below is my code attached which is used to store data currently using vehicleNo:
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference root = db.getReference("Drivers");
DriverModel driverModel = new DriverModel(name,contact,email,licenseNo,vehicleNo,age,bloodGroup,uri.toString(),drowsinessImage,dateTime);
root.child(vehicleNo).setValue(driverModel);
CodePudding user response:
You can get your key by using getKey()
. Refer here: https://firebase.google.com/docs/database/android/read-and-write#update_specific_fields
final String key = root.push().getKey();
Next, modify your model class DriverModel
include the id
. Example:
public class DriverModel{
//Your others attributes...
private String id;
//Do get set also...
}
Last, when you want to store data. You can do like this.
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference root = db.getReference("Drivers");
final String key = root.push().getKey();
DriverModel driverModel = new DriverModel(key, name,contact,email,licenseNo,vehicleNo,age,bloodGroup,uri.toString(),drowsinessImage,dateTime);
root.child(vehicleNo).setValue(driverModel);
CodePudding user response:
There are no error messages, simply because you cannot see them. There is nothing in your code that handles errors. To solve this, you have to attach a listener to the setValue()
operation, to see if something goes wrong. In code, it will be as simple as:
root.child(vehicleNo).setValue(driverModel).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d("TAG", "Data successfully written.");
} else {
Log.d("TAG", task.getException().getMessage()); //Never ignore potential errors!
}
}
});
If you get an error message due to the fact that you have improper security rules, then go to your Firebase console and set them to allow the write operation.