Smit Gajera
Smit Gajera

Reputation: 1039

how to return data through function when fetching data from firebase realtime-database in node.js

How can I get this key in DATA and use this key outside of the function?

let DATA = [];

  const database = admin.database();
  let keyref = database.ref("data");

  keyref.once("value", async function (snapshot) {
    let key = await snapshot.val(); // i want this key data out side this function
    DATA.push(key);
    console.log(DATA);
  });

 console.log(DATA); // i want here that inside function key

In short, I want fetched data outside the function

Upvotes: 1

Views: 452

Answers (2)

Qusai Ryon
Qusai Ryon

Reputation: 11

async function getData() {
  console.log("Refreshing Firebase Credentials");
  const keyref = database.ref("data");
  const snapshot = await keyref.get();

  if (snapshot.exists()) {
    const snapshotVal = snapshot.val();
    console.log(snapshotVal);
    credentials = {
      expires_at: new Date(snapshotVal.expires_at),
      enc_key: snapshotVal.enc_key,
      iv: snapshotVal.iv,
    };
  } else {
    console.log("Firebase Credentials not found");
    process.exit(1);
  }
}

module.exports = {
  getData
};

Use this function where you want to this data

Upvotes: 1

Renaud Tarnec
Renaud Tarnec

Reputation: 83163

When fetching RTDB data only once, it is advised to use the get() method. This method is asynchronous, so you need to do something along the following lines:

  async function getRTDBData(ref) {
    const database = admin.database();
    const keyref = database.ref(ref);
    const snapshot = await keyref.get();

    if (snapshot.exists()) {
        return snapshot.val();
    } else {
       return .... // Up to you to adapt here
    }
  }

  getRTDBData("data")
  .then(val => {
      // Do what you want with val
      console.log(val);
  })

Upvotes: 3

Related Questions