skip to Main Content

When I use this function I get the following result from my realtime database. It looks like a json object.
How can I turn that to an array or retrieve the string userName? snapshot.userName is not working.

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp();

   exports.Push = functions.database.ref('/placeID/{pushId}/')
   .onCreate((snapshot, context) => {
 
      console.log(snapshot)    
   })

enter image description here

enter image description here

2

Answers


  1. A Realtime Database DataSnapshot object is a container that contains your data. To get the data it contains, you need to retrieve its value using the val() method:

    console.log(snapshot.val());
    

    To get the userName from your data, you can use either:

    console.log(snapshot.val().userName)
    // note: if "userName" is missing, this will log `undefined`
    

    or

    // more useful with large snapshots
    console.log(snapshot.child("userName").val())
    // note: if "userName" is missing, this will log `null`
    

    See following link for more info about the DataSnapshot object and available methods/properties:
    https://firebase.google.com/docs/reference/functions/providers_database.datasnapshot

    Added note: The DataSnapshot class overrides the toJSON() method, this is why when you log it, you saw the data it contained rather than the DataSnapshot’s own methods/properties.

    Login or Signup to reply.
  2. snapshot is a reference to a Firestore document. In order to get the data contained in a document doc you need to call doc.data(). So in your case it would be doc.data().userName.

    See the documentation for some examples.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search