Мои данные Firebase организованы следующим образом:
+ myappname
+ customers
+ -JV2NQv3GmoM81zdUfTe
+ name: "Mary"
+ age: "24"
+ ...
+ -JV2N9NnItCfz5vB04RS
+ name: "John"
+ age: "32"
+ ...
+ ...
+ ...
Как получить клиента по его имени?
Имя гарантированно уникально.
В настоящее время это моя служба поддержки клиентов:
app.factory('Customer', function ($firebase, FIREBASE_URL) {
var ref = new Firebase(FIREBASE_URL + 'customers');
var customers = $firebase(ref);
var Customer = {
all: customers,
create: function (customer) {
return customers.$add(customer).then(function (ref) {
var customerId = ref.name();
return customerId;
});
},
set: function(customerId, customer) {
return customers.$child(customerId).$set(customer);
},
find: function (customerId) {
return customers.$child(customerId);
},
findByName: function (customerName) { // TODO...
},
delete: function (customerId) {
var customer = Customer.find(customerId);
customer.deleted = true;
customer.$on('loaded', function () {
customers.$child(customerId).$set(customer);
});
}
};
return Customer;
});
Должен ли я сканировать всех клиентов при каждом вызове findByName()?
Или мне следует построить что-то вроде «вторичного индекса»?
Пожалуйста, совет, я только начинаю... :-(
Query.startAt
иQuery.endAt
для выбора по имени. Если вы уже используете приоритет для чего-то другого, вы действительно можете создать отдельный индекс только для сопоставления имен пользователей с именами узлов. - person Frank van Puffelen   schedule 24.08.2014