Ошибка: не удалось загрузить учетные данные по умолчанию (функция Firebase в firestore) - PullRequest
1 голос
/ 27 сентября 2019

Я пытаюсь написать функцию onCall для Firebase Cloud Functions, которая выполняет расширенные задачи запросов к базе данных firestore (т.е. проверяет текстовый запрос на соответствие естественному языку AutoML, чтобы получить категорию и т. Д.), Но продолжаю сталкиваться с проблемой, пытаясьзапросить базу данных из функции:

Error getting documents ::  Error: Could not load the default credentials. Browse to https://cloud.google.com/docs/authentication/getting-started for more information.
    at GoogleAuth.getApplicationDefaultAsync (/srv/node_modules/google-auth-library/build/src/auth/googleauth.js:161:19)
    at <anonymous>
    at process._tickDomainCallback (internal/process/next_tick.js:229:7)

Функция:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const db = admin.firestore();

exports.query = functions.https.onCall((data, context) => {
    const text = data.text;
    var results = [];
    const promise = db.collection('providers').get()
    promise.then((snapshot) => {
        console.log('marker');
        snapshot.forEach((doc) => {
            results.push({id: doc.id, data: doc.data()});
        });
        console.log('yessir');
        return {results: results};
    }).catch((err) => {
        console.log('Error getting documents :: ', err)
        console.log('nosir');
        return {results: "no results"};
    });
});

Более длинный вывод:

Function execution started
Function execution took 8ms, finished with status code: 200
Error getting documents :: (etc, same error)
nosir

Пример 2 (без изменений в работе):

Function execution started
Function execution took 1200 ms, finished with status code: 200
marker
yessir

Я не могу понять, откуда возникла эта проблема или как ее решить.Любая помощь?

С уважением.

1 Ответ

0 голосов
/ 27 сентября 2019

Чтобы решить эту проблему, я добавил в проект мой ключ администратора SDK Firebase.

Я скачал его по адресу

https://console.firebase.google.com/u/0/project/YOUR_PROJECT_ID/settings/serviceaccounts/adminsdk

Admin SDK Key Download Page

, затем в admin.initializeApp(); я изменил на:

admin.initializeApp({
    credential: admin.credential.cert(require('../keys/admin.json'))
});

Моя структура папок

├── key
│   ├── admin.json
├── src
│   ├── index.ts
...