Я новичок в облачных функциях.
У меня есть приложение для Android, которое вызывает облачную функцию через вызываемый клиент, а облачная функция (node.js / typescript) вызывает Firestore для чтения данных.
Облачный код функции:
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp({credential : admin.credential.applicationDefault()});
exports.queryForData = functions.https.onCall((dats, context) => {
admin.firestore().collection('mydocument').get()
.then(snapshot => {
snapshot.forEach( e => {
if(e.exists)
{
console.log("docs="+e.ref.path);
return {"data":e.data()};
}
else{
console.log("No docs!!!!!")
return {"data":"empty"}
}
})
})
.catch(error => {
console.log("error occurred"+error);
return {error:error};
});
});
Когда мое приложение для Android вызывает эту функцию, я получаю сообщение об ошибке, пойманное блоком перехвата:и я установил переменную среды GOOGLE_APPLICATION_CREDENTIALS , чтобы указать на загруженный файл JSON.
Я попытался initializeApp
без аргументов, с учетными данными с applicationDefault
, а также functions.config().firebase
Я поместил консольные журналы, чтобы увидеть, вызвана ли функция и получен ли вызов HTTP, да, она вызывается.Но, похоже, проблема в том, что я пытаюсь получить коллекцию.
Правило Firestore позволяет аутентифицированным пользователям читать документ.
Я просмотрел видеоуроки и вопрос, заданный здесь ранее, какхорошо, но, похоже, никто не решил мою проблему.
Любая помощь очень ценится