0

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 2

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.

Sign up to request clarification or add additional context in comments.

7 Comments

I already did that my description above was wrong. I tried snapshot.userName and get undefined as result
Please check out my edited answer and let me know if that works for you.
Thank you for the updated code. The result is the same as on my first post.
Does snapshot.val().userName return the username?
BTW Travis, only you will get notifications about comments on your own answer, to notify OP that you are responding to them you need to tag them using @submariner.
|
0

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.

3 Comments

I tried console.log(doc.data().userName) but it says doc is not defined. I looked at the url which u send but did not understand any word from that.
try console.log(snapshot.val().userName)
this gives me undefined as an answer

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.