#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(); } }); }