Получить отправленный идентификатор из дочернего значения в Firebase Android

#android #firebase #firebase-realtime-database

#Android #firebase #firebase-realtime-database

Вопрос:

Я хочу нажать клавишу на основе дочернего идентификатора «ItemName», а не случайного ключа «-MGn8_FVxye1FIEL2ds2» В моем инвентаре Firebase

   public void addInventory(inventoryList inventory, final invenFirebaseHelper.DataStatus dataStatus){
    String key= mReferenceInventory.push().getKey();
    mReferenceInventory.child(key).setValue(inventory)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    dataStatus.DataIsInserted();
                }
            });
}
  

Ответ №1:

Вы можете использовать, как показано ниже

 public void addInventory(inventoryList inventory, final invenFirebaseHelper.DataStatus dataStatus){
    mReferenceInventory.child(inventory.itemName).setValue(inventory)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    dataStatus.DataIsInserted();
                }
            });
}
  

Он сохранит данные с ключом, указанным в инвентаре ItemName. Убедитесь, что он должен быть уникальным, иначе это переопределит существующие данные.

Примечание: Если вы создаете свои собственные ключи, они должны быть в кодировке UTF-8, иметь максимальный размер 768 байт и не могут содержать ., $, #, [, ], /, или управляющие символы ASCII 0-31 или 127.

Обратитесь к этой ссылке:https://firebase.google.com/docs/database/web/structure-data

Комментарии:

1. Но если я обновлю ItemName, он не изменится и вместо этого откроет дочерний элемент create customer. пожалуйста, помогите

2. Это код public void UpdateCustomer(строковый ключ,список клиентов customer,конечный статус данных dataStatus){ mReferenceCustomer.child(customer.getCustName()).setValue(customer) .addOnSuccessListener(новый OnSuccessListener<Void>() { @Переопределить public void onSuccess(избежать аннулирования) { dataStatus. DataIsUpdated(); } }); }