Установка пользовательского ключа при отправке новых данных в базу данных Firebase

Что ж, я новичок в Firebase и хочу иметь свои собственные ключи при отправке новых данных в базу данных.

Проблема:

FireBase.push().setValue(mapped_values);

Это дает структуру, как показано ниже:

Как я могу создать свой собственный ключ? Например, имя пользователя или что-то еще.

Ответы на вопрос(7)

Если вы используетеFirebaseUI :

private static final CollectionReference usersCollection = FirebaseFirestore.getInstance().collection("users");

User user = new User("MyUsername", "MyPictureUrl");
String userKey = "1234567sdfsf8";

usersCollection.document(userKey).set(user); //MAGIC LINE

push() сгенерирует для вас ключ.

Если вместо этого вы используетеchild()Вы можете определить их ключ / путь самостоятельно.

ref.child("Victor").setValue("setting custom key when pushing new data to firebase database");
 FrenchyNYC13 февр. 2017 г., 18:43
Он не пометил его как ответ, потому что он не отвечает на его вопрос, поскольку Firebase автоматически генерирует ребенка со случайным ключом, независимо от того, что вы нажимаете или вводите в базу данных.
 Diego15 июн. 2017 г., 09:49
Установка @trojan в конструкторе: constructor (private db: AngularFireDatabase) вы можете сделать так: this.db.database.ref (). child ('somechild'). set ('somevalue')
 trojan05 мая 2017 г., 11:05
А как это сделать с angularfire2?
 Bojan Kogoj27 мар. 2017 г., 13:43
@FrenchyNYC Нет, если вы используете.child('customkey')...
 Aziz Javed26 мая 2018 г., 19:12
Как бы вы сделали это для массива данных с пользовательскими идентификаторами? push () может взять словарь данных, но child () не может

Вы можете создать собственный ключ, используяSetValue () даже если корень содержит много дочерних элементов, например, если «Пользователи» являются корнем, и вы хотите добавить пользователей с электронной почтой в качестве ключа, это будет так

firebase.child("firebase url").child("Users").child("user_1 email").setValue(...)

firebase.child("firebase url").child("Users").child("user_2 email").setValue(...)

так далее

Надеюсь это поможет.

если вы используете Fire-Sharp, вы можете создать пользовательский ключ следующим образом

            IFirebaseConfig config = new FirebaseConfig
            {
                AuthSecret = "SecretKey",
                BasePath = "https://abc.firebaseio.com/",
                Host = "abc.firebaseio.com/"
            };
            IFirebaseClient client = new FirebaseClient(config);

            var obj = new Users
            {
                FirstName = "test",
                MiddleName = "user",
                LastName = "xyz"

            };

            SetResponse response = client.SetAsync("Profile", "YourID");//you can use Set() as well
            response = client.SetAsync("Profile/YourID", obj);//you can use Set() as well

В качестве обновления к верхнему ответу,Firebase API был изменен а такжеsetValue() больше не работает. Теперь вы должны использоватьset() функция вместо:

ref.child("Victor").set("setting custom key when pushing new data to firebase database");
        String key="1234567sdfsf8";
        //custom object
        User user=new User();
        DatabaseReference mDatabase;
        mDatabase = FirebaseDatabase.getInstance().getReference();
        mDatabase.child("Users").child(key).setValue(user);

Просто и быстро

 Map<String,Object> taskMap = new HashMap<>();
       taskMap.put("Name", name.getText().toString());
       taskMap.put("km", km.getText().toString());
      // taskMap.put("age", "45");
       taskMap.put("Day", day.getText().toString());
       mDatabaseReference.push().setValue(taskMap);

Ваш ответ на вопрос