Невозможно получить доступ к документу Firestore в облачной функции Firestore - PullRequest
0 голосов
/ 18 сентября 2018

Проблема: введите Ошибка

Я настроил функцию облачного хранилища Firestore для вызова из моего приложения Android, которое вызывается, как и ожидалось, однако я не могу получить доступ к документу Firestore из метода и получить TypeError в журналах.

Попытки решения

  1. functions.firestore().document('qa/content/feeds/main/content/'+contentTitle)
  2. functions.firestore().ref('qa/content/feeds/main/content/'+contentTitle)

const functions = require('firebase-functions');

// The Firebase Admin SDK to access the Firebase Realtime Database.
const admin = require('firebase-admin');
admin.initializeApp();

const MAIN_FEED_TYPE = "MAIN";
const SAVED_FEED_TYPE = "SAVED";
const ARCHIVED_FEED_TYPE = "ARCHIVED";
const SAVE_USER_ACTION = "SAVE";
const ARCHIVE_USER_ACTION = "ARCHIVE";
const SAVED_PATH = "saved"
const ARCHIVED_PATH = "archived"

exports.updateQualityScore = functions.https.onCall((data, context) => {
    const environment = data.environment
    const feedType = data.feedType
    const action = data.action
    const contentTitle = data.contentTitle
    const uid = context.auth.uid;

    var feedTypePath
    if (feedType === SAVED_FEED_TYPE) {
        feedTypePath = SAVED_PATH
    } else if (feedType === ARCHIVED_FEED_TYPE) {
        feedTypePath = ARCHIVED_PATH
    }

    admin.firestore().ref('qa/content/feeds/main/content/'+contentTitle)
        .get().then(function(doc) {
            console.log('Trigger fired on content: ' 
                +  contentTitle +  " | user: " + uid
                + " | action: " + action + ' | feedType: ' + feedType);
            if (doc.exists) {
                console.log("Document data:", doc.data());
            } else {
                console.log("No such document!");
            }
            return {
                status: 'Get content success.'
             }
        }).catch(function(error) {
            console.log("Error getting document:", error);
            return {
                status: 'Get content error.'
            }
        });
});

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Firestore не имеет метода ref (). База данных в реальном времени. Вы, вероятно, путаете их.

С Firestore вы имеете дело с коллекциями и документами, и есть разные способы получить ссылки на коллекции и документы. Может быть, вы хотели использовать метод doc () вместо этого?

admin.firestore().doc('qa/content/feeds/main/content/'+contentTitle)
0 голосов
/ 18 сентября 2018

Извините, неправильный ответ.

При инициализации приложения необходимо передать учетные данные.

const admin = require('firebase-admin');
const functions = require('firebase-functions');

admin.initializeApp(functions.config().firebase);

var db = admin.firestore();

или

admin.initializeApp({
  credential: admin.credential.cert({
    projectId: '<PROJECT_ID>',
    clientEmail: 'foo@<PROJECT_ID>.iam.gserviceaccount.com',
    privateKey: '-----BEGIN PRIVATE KEY-----\n<KEY>\n-----END PRIVATE KEY-----\n'
  }),
  databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});

инициализировать SDK Быстрый старт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...