Je travaille dans Android Studio sur une application qui utilise Firebase pour se connecter et stocker des données dans sa base de données en temps réel. J'utilise les règles de base de données Firebase par défaut, donc seuls les utilisateurs authentifiés peuvent écrire/lire dans la base de données.Enregistrer plusieurs données avec la même base de données uid to Firebase
J'ai une activité (AddMarker) qui enregistre deux valeurs editText et une valeur LatLong (celle-ci d'une autre activité) dans la base de données. Le code fonctionne vraiment et je peux voir les données qui y sont stockées ainsi: DB structure
Le problème est que chaque fois que je sauverai (dans AddMarker activité), les données antérieures liées à cet identifiant, sera remplacé par le nouveau un.
Au lieu de cela, je voudrais stocker dans la base de plusieurs valeurs avec le même identifiant comme celui-ci par exemple: DB structure 2
Ceci est mon code
public class AddMarker extends AppCompatActivity implements View.OnClickListener {
//Save flag
public static boolean isSaved;
//Database
private DatabaseReference databaseReference;
FirebaseAuth firebaseAuth;
private FirebaseAuth mAuth;
//UI
private EditText tipo, marca;
private Button saveMarker;
public LatLng ll;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_marker);
//DB
mAuth = FirebaseAuth.getInstance();
databaseReference = FirebaseDatabase.getInstance().getReference();
//Initialize views
tipo = (EditText) findViewById(R.id.type);
marca = (EditText) findViewById(R.id.specInfo);
saveMarker = (Button) findViewById(R.id.save_btn);
//Initialize isSaved
isSaved = false;
//Set button listener
saveMarker.setOnClickListener(this);
//get Position
ll = getIntent().getParcelableExtra("POSITION");
}
private MarkerOptions saveMarkerInfo(){
String tipo_str = tipo.getText().toString().trim();
String marca_str = marca.getText().toString().trim();
LatLng pos = ll;
MarkerInfo markerInfo = new MarkerInfo(tipo_str,marca_str, pos);
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
MarkerOptions marker = new MarkerOptions()
.position(ll)
.anchor(0.0f, 1.0f)
.title("prova")
//Add data to DB
databaseReference.child(user.getUid()).setValue(markerInfo);
Toast.makeText(this,"infos saved",Toast.LENGTH_LONG).show();
finish();
return marker;
}
@Override
public void onClick(View v) {
if(v == saveMarker){
isSaved = true;
MarkerOptions mo=saveMarkerInfo();
MainActivity.mMap.addMarker(mo);
}
}
}
Merci! J'ai résolu mon problème en utilisant l'uid Push, mais votre solution m'aidera beaucoup à l'avenir pour d'autres projets. – Reyd