Firebase snapshot.key not returning actual key?

I have a query that searches for a user based on user ID.

usersRef.queryOrderedByChild("email").queryEqualToValue(email).observeEventType(.Value, withBlock: { snapshot in
    if snapshot.exists() {
        print("user exists")
        print(snapshot.key)

The query returns the correct user, but the line print(snapshot.key) literally returns the word “users”, and not an actual user ID. print(snapshot) returns the following user:

  • How to save data from query, in array of string, Firebase iOS?
  • Firebase Query snapshot nil?
  • Cannot subscript a value of type ''
  • Properly Using Firebase Cloud Functions and Stripe
  • How to write data to firebase when offline? Swift3
  • Firebase uploading file getting optional string in filename
  • Snap (users) {
       DELyncz9ZmTtBIKfbNYXtbhUADD2 =     {
           email = "test3@gmail.com";
           "first_name" = test;
           "last_name" = test;
       };
    

    How can I get DELyncz9ZmTtBIKfbNYXtbhUADD2? I can get the email by using let email = child.value["email"] but I can’t get the key because it’s not a named attribute.

    Thanks!!

    EDIT: Updated code thanks to Frank’s answer. Getting ambiguous use of key

    query.observeEventType(.Value, withBlock: { snapshot in
                print(snapshot.key)
    
                if snapshot.exists() {
                    print("user exists")
    
                    for child in snapshot.children {
                        print(child.key)
    

    Solutions Collect From Internet About “Firebase snapshot.key not returning actual key?”

    When you run a query at a location, the result will be a list of the matching children. Even if there is only a single matching item, the result will be a list of one child.

    You’re printing the key of all resulting children. Since there is no single result, the SDK prints the key of the location/collection that you queried: users.

    What you’re likely looking for is to loop over the matching children and print their keys:

    let query = usersRef.queryOrderedByChild("email").queryEqualToValue(email)
    query.observeEventType(.Value, withBlock: { snapshot in
        for child in snapshot.children {
            print(child.key)
        }
    })