Skip to content

Instantly share code, notes, and snippets.

@anantn
Created December 18, 2012 00:54
Show Gist options
  • Select an option

  • Save anantn/4323949 to your computer and use it in GitHub Desktop.

Select an option

Save anantn/4323949 to your computer and use it in GitHub Desktop.
Firebase: Detecting if data exists. This snippet detects if a user ID is already taken
function go() {
var userId = prompt('Username?', 'Guest');
checkIfUserExists(userId);
}
var USERS_LOCATION = 'https://SampleChat.firebaseIO-demo.com/users';
function userExistsCallback(userId, exists) {
if (exists) {
alert('user ' + userId + ' exists!');
} else {
alert('user ' + userId + ' does not exist!');
}
}
// Tests to see if /users/<userId> has any data.
function checkIfUserExists(userId) {
var usersRef = new Firebase(USERS_LOCATION);
usersRef.child(userId).once('value', function(snapshot) {
var exists = (snapshot.val() !== null);
userExistsCallback(userId, exists);
});
}
@visalig

visalig commented Dec 10, 2014

Copy link
Copy Markdown

Firebase userRef= new Firebase(USERS_LOCATION);
userRef.child(userId).addListenerForSingleValueEvent(new ValueEventListener() {
@OverRide
public void onDataChange(DataSnapshot snapshot) {
if (snapshot.getValue() !== null) {
//user exists, do something
} else {
//user does not exist, do something else
}
}
@OverRide
public void onCancelled(FirebaseError arg0) {
}
});

Single user this is ok, but how to compare the more than one user?

I try below type thats not working can u anyone give me a idea for this
Firebase ref= new Firebase(USERS_LOCATION);
ref.addValueEventListener(new ValueEventListener() {
public void onDataChange(DataSnapshot snapshot) {
if (snapshot.getValue() !== null) {
//user exists, do something
} else {
//user does not exist, do something else
}
}
@OverRide
public void onCancelled(FirebaseError arg0) {
}
});

@visalig

visalig commented Dec 10, 2014

Copy link
Copy Markdown

above one is working for username or email or phone only check to find the user already exit or not, but how to i compare the more than one user at a same time to find the user exit or not. i used this
Firebase ref= new Firebase(USERS_LOCATION);
ref.addValueEventListener(new ValueEventListener() {
public void onDataChange(DataSnapshot snapshot) {
if (snapshot.getValue() !== null) {
//user exists, do something
} else {
//user does not exist, do something else
}
}
@OverRide
public void onCancelled(FirebaseError arg0) {
}
});
way but its always going to already exit method only, anyone can explain. how to do that?

@biskalero78

Copy link
Copy Markdown

That is very strange, when I try to do that in my own application , it does not even go into the function only if data exists which I am tearing hair out because of it.

@bwilytsch

Copy link
Copy Markdown

Awesome. Thanks a lot!

@rawrmaan

Copy link
Copy Markdown

This is awful.

@champi0ne

Copy link
Copy Markdown

This is definitely an anti-pattern described in the firebase docs.

@canopii

canopii commented Jun 22, 2015

Copy link
Copy Markdown

how to check for more then one value lets say Name: John Surname:Smith how do I check if both exist must i use a two methods?

@lgomez

lgomez commented Jun 23, 2015

Copy link
Copy Markdown

you probably don't need this but I figured I'd share it. Just feels a bit cleaner to me:

// The ideantifier in the collection.
var uid = 2;
// the data for the object being created/updated.
var user = {
    name: "Luis",
    twitter: "@luisgo"
};
// attempt to get the child in the collection by uid.
db.child('users').child(uid).once('value', function(snapshot){
    // if data exists
    if (snapshot.exists()) {
        // get the ref (in this case /users/2) and update its contents
        snapshot.ref().update(user);
    } else {
        // data does not exist so we wrap the data in an object with
        // a member named after the uid so we can pass it as an update
        // to the parent.
        var payload = {};
            payload[uid] = user;
        // get the ref's parent and call update on it.
        snapshot.ref().parent().update(payload);
    }
});

@cheenbabes

Copy link
Copy Markdown

@lgomez that is brilliant! You saved me so much time.

@iheartkode

Copy link
Copy Markdown

+1

@tumaponchard16

Copy link
Copy Markdown

Can anyone has an idea on how to do it in Laravel?

ghost commented Mar 4, 2016

Copy link
Copy Markdown

nice

@Abdul007Malik

Abdul007Malik commented Apr 26, 2016

Copy link
Copy Markdown

I am making chat application using java, "https://github.com/Abdul007Malik/Conversa.git", I am confused and cannot progress further help me if you can, my questions:

  1. if I know the auth.getUID of others can i modify there data or firebase have different mechanism to check authentication.
  2. how can I send the invitation(inviting to join the group) to friends if i know there phone numbers but dont know there particular userid.

@sebasj14

Copy link
Copy Markdown

This was just perfect. Thank you!

@davidgilbertson

davidgilbertson commented May 10, 2016

Copy link
Copy Markdown

A promise based version (where db is a Firebase ref)

export function checkIfUserExists(authData) {
  return db
    .child('users')
    .child(authData.uid)
    .once('value')
    .then(dataSnapshot => {
      return Promise.resolve({
        authData,
        userExists: dataSnapshot.exists(),
      });
    });
}

Which would be called like so:

  db.authWithOAuthPopup(provider)
    .then(checkIfUserExists)
    .then(({authData, userExists}) => {
      if (userExists) {
        // update user
      } else {
        // go create a user
      }
    })
    .catch(err => {
      console.warn('Error signing in.', err);
    });

Gist: https://gist.github.com/davidgilbertson/52a72f7c5e35502127e5848a8bf881b2

@amanuel2

amanuel2 commented Jun 4, 2016

Copy link
Copy Markdown

Thanks a lot sir. Helped me construct my own idea

@samyoungnyc

Copy link
Copy Markdown

has anyone figured this out using Python? I'm using the following library: https://pypi.python.org/pypi/python-firebase/1.2

@amirshahzadmcs

Copy link
Copy Markdown

Please any body can tell me that i have request record in firebase . i want to get spesific user which userId is 91 how i can access this user by query on firebase

{
"request" :
{
"123" :
{
"userId" : "90",
"name" : "mary"
},
"124" :
{
"userId" : "91",
"name" : "johan"
},
"124" :
{
"userId" : "92",
"name" : "maikal"
}
}
}

@sudikrt

sudikrt commented Jul 15, 2016

Copy link
Copy Markdown

How to retrieve the user email using the user id (client id)?

@j-garin

j-garin commented Aug 4, 2016

Copy link
Copy Markdown

sudikrt, create a table with names and emails and add data to it after user has registered. then you will be able to search for records by email or id.

@ayudh37

ayudh37 commented Nov 3, 2016

Copy link
Copy Markdown

The crux: var exists = (snapshot.val() !== null);

@ayoola-solomon

Copy link
Copy Markdown

if you want to listen on a node. You can change the implementation to the snippet below.

  const checkIfUserExists = (userId) => {
    const usersRef = new Firebase(USERS_LOCATION);
    usersRef.child(userId).on('value', (snap) => {
    const exists = (snap.val() !== null);
    userExistsCallback(userId, exists);
   });
 }

@clins1994

Copy link
Copy Markdown

didn't know about the once() method. thanks 👍

@l-bimba

l-bimba commented Jun 26, 2017

Copy link
Copy Markdown

Can you do this in swift?

@guilhermemauro

Copy link
Copy Markdown

Nice!

@Sowmayjain

Sowmayjain commented Jul 23, 2017

Copy link
Copy Markdown

+2

@Sunitadaffodil

Copy link
Copy Markdown

I am making chat application using java, "https://github.com/Abdul007Malik/Conversa.git", I am confused and cannot progress further help me if you can, my questions:

  1. if I know the auth.getUID of others can i modify there data or firebase have different mechanism to check authentication.
  2. how can I send the invitation(inviting to join the group) to friends if i know there phone numbers but dont know there particular userid.

Did you find any solution for this. I am facing same issue where I know email id but not user id

@tayouthae

Copy link
Copy Markdown

Can you give us python examples??

@lohriialo

Copy link
Copy Markdown

@sylvain-guehria

Copy link
Copy Markdown

thank's man, very helpful =)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment