我有一个函数可以从我的 firebase 中获取数据并显示它。这在部署时可以完美运行,但不能在本地运行。
我附上了我的代码以防万一,但看到它在部署时有效,我认为这不是问题,它的副本也是从 freecodecamp 教程中粘贴过来的。
目录如下:
firebase folder
|functions
||APIs
|||todos.js
||util
|||admin.js
||index.js
此外,本地版本确实有输出,它只是在 todos.js 第 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);
我也执行了 export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
无济于事。
答案 0 :(得分:2)
您在没有任何凭据的情况下初始化了应用程序:
const refreshToken; // Get refresh token from OAuth2 flow
admin.initializeApp({
credential: admin.credential.refreshToken(refreshToken),
databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});
[参考此网站了解更多信息:] https://firebase.google.com/docs/admin/setup/#initialize-without-parameters