Подтвердить что ты не робот

Настройка настраиваемого ключа при нажатии новых данных в базу данных firebase

Ну, я новичок в Firebase, и хочу, чтобы у меня были свои собственные ключи, а новые базы данных были добавлены в базу данных.

Проблема:

FireBase.push().setValue(mapped_values);

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

database output

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

4b9b3361

Ответ 1

Вызов push() будет генерировать ключ для вас.

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

ref.child("Victor").setValue("setting custom key when pushing new data to firebase database");

Ответ 2

        String key="1234567sdfsf8";
        //custom object
        User user=new User();
        DatabaseReference mDatabase;
        mDatabase = FirebaseDatabase.getInstance().getReference();
        mDatabase.child("Users").child(key).setValue(user);

Ответ 3

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

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

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

и т.д.

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

Ответ 4

Если вы используете 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

Ответ 5

Просто для обмена знаниями.

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

            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

Ответ 6

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

 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);

Ответ 7

если ссылка на базу данных child является фиксированной строкой, новое значение не добавится. просто он обновит предыдущее значение. например:

DatabaseReference myRef = FirebaseDatabase.getInstance().getReference(); String mText =//get data from editText or set your own custom data

Теперь, если я вставлю данные, как это:

myRef.child("abc").child("cba").setValue(mText);

каждый раз, когда я вставляю данные, он обновляет мои предыдущие данные. Это не добавит новые данные. Потому что моя ссылка здесь исправлена (myRef.child("abc").child("cba")//эта, которая всегда исправлена).

Теперь измените значение дочернего "cba" на случайное или динамическое значение, которое не будет исправлено. Например:

Random rand = new Random();//Obtain a number between [0 - 49]. int n = rand.nextInt(50); myRef.child("abc").child(String.valueOf(n)).setValue(mText);

В этом случае он будет добавлять новое значение вместо обновления. потому что это время не зафиксировано здесь. это динамично. Метод push() делает то же самое. он генерирует случайный ключ для сохранения уникальной ссылки.

Ответ 8

В POST-запросе он сгенерирует ID, но в PATCH, PUT-запросе будет указан ключ, который будет предоставлен вами.

Ответ 9

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

ref.child("Victor").set("setting custom key when pushing new data to firebase database");