Имам следващ списък с база данни (потребителски имена + потребителски идентификатор).
Как мога да намеря обект по идентификатор на потребителя и да променя неговия ключ (потребителско име)?
Използвам AngularFire2 с Angular 5.
Отговори:
1 за отговор № 1Можете да намерите дочерния възел по неговата стойност със заявка като тази:
var users = firebase.database().reference("usernames");
var query = users.orderByValue().equalTo("Sk6I..."ltA2");
Като прикачите слушател към тази заявка, ще можете да намерите референцията и ключа на потребителя (или „всички потребители“, тъй като технически може да има повече ключове със същата стойност), съответстващи на UID.
Но не можете да "преименувате възел. Ще трябва да премахнете съществуващия възел и да създадете нов. Повече за това вижте:
- Firebase: Ключ за актуализация?
- API на Firebase за преместване на клон на дърво от колекция в друг
- Възможно ли е да преименувате ключ в базата данни за реално време на Firebase?
0 за отговор № 2
Решение за моя случай:
this.db.list("usernames", ref => ref.equalTo(uid)).remove() // Remove old value
this.db.list("usernames", ref => ref.equalTo(uid)).set(
username, uid
) // Create new value