Uzyskaj identyfikator indeksu elementu w Firebase AngularFire

Podobne pytanie zadano tutaj, ale jedna zaakceptowana odpowiedź tak naprawdę nie odpowiada na pytanie.

Czy za pomocą AngularFire można tworzyć relacyjne bazy danych? Lub uzyskaj dostęp do unikalnych identyfikatorów?

Podczas dodawania zagnieżdżonych elementów do Firebase przez AngularFire, każdy element jest w rzeczywistości ustawiony pod innym indeksem numerowanym.

Z tego powodu będę musiał odwołać się do produktów użytkownika za pomocą następującego względnego adresu URL:

users/:id/products

Moje pytanie brzmi: jak już utworzę użytkownika (lub cokolwiek innego), jak uzyskać wartość indeksu?

// Get the users
var ref = new Firebase('https://myapp.firebaseio.com/users')
var promise = angularFire(ref, $scope, 'users', {})
promise.then(function() {
  // Can I get the ID from here somehow?
})

// Users saves a product
id = null // ???
var product = {
   name: 'new product',
   desc: 'this is a new product'
}
var ref = new Firebase('https://myapp.firebaseio.com/users/' + id + '/products')
var promise = angularFire(ref, $scope, 'products', {})
promise.then(function() {
  $scope.products.push(product)
})

Aktualizacja

Aby wyjaśnić, nie jest to pytanie o uwierzytelnianie użytkownika. Mam już to załatwione. Przepraszam za zamieszanie.

Właśnie wpadłem na ceglany mur, kiedy zaczynam robić rzeczy „pod” innymi rzeczami w Firebase. Nie ma znaczenia, czy tousers lubgiraffes.

Jeśli utworzę „Sklepy”, każdy Sklep ma „Produkty” (powiedzmy).

Chciałbym móc je odzyskać

stores/{storeId}/products

AlestoreId najlepiej byłoby, gdyby był to identyfikator indeksu utworzony z AngularFire (patrz zdjęcie, które załączyłem). Problem polega na tym, że AngularFire po prostu tworzy ten identyfikator, nie informując mnie o tym.

Gdybym miał jakąś funkcję sukcesu

success: function(response) { 
  $scope.store.id = response.indexId
}

To byłoby najbardziej sensowne, ale nie wydaje się, żeby AngularFire przygotował tę bardzo potrzebną funkcjonalność. Udowodnij, że się mylę. :)

questionAnswers(3)

yourAnswerToTheQuestion