querySnapshot.forEach не работает в облачной функции firebase - PullRequest
0 голосов
/ 06 августа 2020

Я вызываю функцию firestore при создании триггеров, которая добавляет данные в коллекцию из другой коллекции, но проблема в том, что я сохраняю данные в переменной querysnapshot, но функция не может выполнить итерацию querysnapshot, она даже не go внутри querysnapshot.forEach. Когда я тестировал локально, он работал, но не на сервере. Я действительно застрял здесь. Если кто-то может помочь, ответьте

EDIT

У меня есть данные в коллекции userPosts, но я не получаю никаких документов в querysnapshot, он возвращает 0 документов, я не понимаю почему?

Я прикрепил результаты своей консоли, а также данные Firestore и обновил код.

Журнал функции Firebase

Firestore данные 1

Данные Firestore 2

Данные Firestore 3

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

admin.initializeApp();
const firestore = admin.firestore();
const settings = { timestampsInSnapshots: true };
firestore.settings(settings);

export const onCreateFollower = functions.firestore
    .document("/followers/{userId}/userFollowers/{followerId}")
    .onCreate(async (snapshot, context) => {
         console.log("Follower Created", snapshot.id);
        const userId = context.params.userId;

        console.log("User ID", userId);

        const followerId = context.params.followerId;

        console.log("Follower ID", followerId);

        // 1) Create followed users posts ref
        const followedUserPostsRef = firestore
            .collection("posts")
            .doc(userId)
            .collection("userPosts");

        // 2) Create following user's timeline ref
        const timelinePostsRef = firestore
            .collection("timeline")
            .doc(followerId)
            .collection("timelinePosts");

        // 3) Get followed users posts
        followedUserPostsRef.get().then(querySnapshot => {
            console.log(`Inside QuerySnapshot with ${querySnapshot.size} docs`)
            querySnapshot.forEach(doc => {
                console.log("Inside ForEach");
                if (doc.exists) {
                    const postId = doc.id;
                    console.log(postId)
                    const postData = doc.data();
                    console.log(postData) //Q2g2EutTRSOr9GPmeBlkt0ZZ40m2
                    timelinePostsRef.doc(postId).set(postData).then(() => {
                        console.log("Data successfully Added.")
                    }).catch((err) => {
                        console.log("Could not set the Data");
                        console.log(err);
                    });
                }
            });
        }).catch(err=>{
            console.log(err);
        });
    });

журнал Querysnapshot

QuerySnapshot {
  _query: 
   CollectionReference {
     _firestore: 
      Firestore {
        _settings: [Object],
        _settingsFrozen: true,
        _serializer: [Object],
        _projectId: 'test',
        registeredListenersCount: 0,
        bulkWritersCount: 0,
        _backoffSettings: [Object],
        _clientPool: [Object] },
     _queryOptions: 
      QueryOptions {
        parentPath: [Object],
        collectionId: 'userPosts',
        converter: [Object],
        allDescendants: false,
        fieldFilters: [],
        fieldOrders: [],
        startAt: undefined,
        endAt: undefined,
        limit: undefined,
        limitType: undefined,
        offset: undefined,
        projection: undefined },
     _serializer: 
      Serializer {
        createReference: [Function],
        createInteger: [Function],
        allowUndefined: false },
     _allowUndefined: false },
  _readTime: undefined,
  _size: 0,
  _materializedDocs: null,
  _materializedChanges: null,
  _docs: [Function],
  _changes: [Function] }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...