1
votes

I have a function that just fetches the data from my firebase and displays it. This works perfectly when deployed, but not locally.

I've attached my code just in case, but seeing as it works when deployed, I dont think that will be the problem, also its copy pasted from freecodecamp tutorial.

Directory is as follows:

firebase folder
|functions
||APIs
|||todos.js
||util
|||admin.js
||index.js

Also, the local version does have an output, its just the empty array initialised in todos.js line 9.

//todos.js
const { db } = require('complete file path');

exports.getAllTodos = (request, response) => {
    db
        .collection('todos')
        .orderBy('createdAt', 'desc')
        .get()
        .then((data) => {
            let todos = [];
            data.forEach((doc) => {
                todos.push({
                    todoId: doc.id,
                    title: doc.data().title,
                    body: doc.data().body,
                    createdAt: doc.data().createdAt,
                });
            });
            return response.json(todos);
        })
        .catch((err) => {
            console.error(err);
            return response.status(500).json({ error: err.code});
        });
};

//admin.js
const admin = require('firebase-admin');

admin.initializeApp();

const db = admin.firestore();

module.exports = { admin, db };
//index.js
const functions = require('firebase-functions');
const app = require('express')();

const {
    getAllTodos
} = require('./APIs/todos')

app.get('/todos', getAllTodos);
exports.api = functions.https.onRequest(app);

I also performed export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json" to no avail.

1
Do you get an error? If so, please share it. - Samuel Romero

1 Answers

2
votes

You initialized the the app without any credentials:

const refreshToken; // Get refresh token from OAuth2 flow

admin.initializeApp({
  credential: admin.credential.refreshToken(refreshToken),
  databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});

[Reference this site for more information:] https://firebase.google.com/docs/admin/setup/#initialize-without-parameters