Skip to content

Instantly share code, notes, and snippets.

@ebeeson
Last active December 25, 2015 17:39
Show Gist options
  • Save ebeeson/7014450 to your computer and use it in GitHub Desktop.
Save ebeeson/7014450 to your computer and use it in GitHub Desktop.
Example of building a basic "index" in Firebase.
var users = firebase.child('users');
var usersByEmailIndex = firebase.child('indexes/users/email');
var createUser = function(username, emails) {
var newUserRef = users.push({
username: username,
emails: emails
});
var userId = newUserRef.name();
emails.forEach(function(email) {
usersByEmailIndex.child(firebaseCodec.encode(email)).set(userId);
});
return userId;
};
var getUserByEmail = function(email, callback) {
usersByEmailIndex.child(firebaseCodec.encode(email)).once('value', function(snapshot) {
var userId = snapshot.val();
users.child(userId).once('value', function(snapshot) {
callback(snapshot.val());
});
});
};
createUser('Erik Beeson', ['erik1@example.com', 'erik2@example.com']);
getUserByEmail('erik2@example.com', function(user) {
console.log(user); // {username: 'Erik Beeson', emails: ['erik1@example.com', 'erik2@example.com']}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment