Ich versuche herauszufinden, wie überprüft werden kann, ob sich ein bestimmter Schlüssel in meiner Firebase-Datenbank befindet. Ich benutze Xamarin und das Xamarin.Firebase.Database nugget Paket. Aus irgendeinem Grund ist dieses Paket nicht wie die restlichen Bindungen auf der Xamarin Components-Seite aufgeführt, daher gibt es keine Beispiele, die ich spezifisch für dieses Paket finden kann.Abrufen von Daten aus der Firebase-Datenbank mithilfe von Xamarin.Firebase.Database
Ich möchte überprüfen, ob ein Benutzername bereits vergeben ist.
EDIT: Neuer Code unten basierend auf der aktuellen Antwort.
//Database instance
DatabaseReference oRoot = FirebaseDatabase.Instance.Reference.Root;
DatabaseReference oUsernamesRef = oRoot.Child("usernames");
//Username isn't taken
var userListener = new UserValueEventListener((sender, e) =>
{
bool result = (e as UserEventArgs).value;
if (result)
{
lstErrors.Add("The username you selected already exists. Please choose a different one.");
txtUsername.Background = GetDrawable(Resource.Drawable.edittext_modified_states_error);
}
}, sUsername);
oUsernamesRef.OrderByChild("username").EqualTo(sUsername).AddListenerForSingleValueEvent(userListener);
oUsernamesRef.OrderByChild(txtUsername.Text.ToLower()).EqualTo(txtUsername.Text.ToLower()).AddListenerForSingleValueEvent(oListener);
Zuhörer:
public class UserValueEventListener : Java.Lang.Object, IValueEventListener
{
EventHandler OnChange;
string Username;
public UserValueEventListener(EventHandler OnChange, string Username)
{
this.OnChange = OnChange;
this.Username = Username;
}
public void OnCancelled(DatabaseError error)
{
//
}
public void OnDataChange(DataSnapshot snapshot)
{
throw new Exception("here.");
if (OnChange != null && snapshot.Value != null && snapshot.HasChild(Username))
{
OnChange.Invoke(this, new UserEventArgs(true));
}
}
}
Ereignis
public class UserEventArgs : EventArgs
{
public UserEventArgs(bool value)
{
this.value = value;
}
public bool value { get; set; }
}
Hat jemand in der Lage gewesen, dieses Paket zu verwenden und diese Arbeit zu bekommen? Jede Hilfe wird geschätzt.
Danke für die Antwort. Bitte sehen Sie sich meine aktualisierte Frage an, die auf Ihrem Code basiert. – Tristan
@Tristan Wenn Sie feststellen möchten, ob der Benutzer ** nicht ** existiert, überprüfen Sie im 'IValueEventListener.OnDataChange', ob der' snapshot.Key' der ist, den Sie anfordern, und der 'snapshot.ChildrenCount' ist gleich Null. – SushiHangover
Danke. Will, aber ich glaube auch nicht, dass der Zuhörer gefeuert wird. Diese Ausnahme in der OnChange-Funktion wird nie ausgelöst. – Tristan