Облачные функции Работа Функции планировщика

# #node.js #firebase #google-cloud-firestore #google-cloud-functions

Вопрос:

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

Для моего следующего шага я хотел бы понять, получает ли эта функция при запуске ВСЕ документы во ВСЕХ коллекциях сразу? Или он перебирает коллекции одну за другой? Причина, по которой мне нужно знать, заключается в том, что я хочу создать некоторые переменные и сбросить их при изменении коллекции.

Мой нынешний способ действий таков:

 exports.schFun = rf.pubsub.schedule('0 6 * * *')
    .timeZone('Europe/London') // Users can choose timezone
    .onRun(async (context) => {
      // Should these be declared here?
      let totalNumAccepted = 0;
      let totalRevenueAccepted = 0.0;
      let totalNumRejected = 0;
      let totalRevenueRejected = 0.0;

      let postcode = [];
      let timeOrderPlaced = new Date();

      const querySnapshot = await db.collectionGroup("open_orders") // This is separate for each store
      .where('complete', '==', true)
      .get();
      querySnapshot.forEach((doc) => { 
      // Here onwards I want to fill the above variables with data fields in documents and reset the variables when "open_orders" collection changes...
 

Ответ №1:

когда эта функция запускается, получает ли она ВСЕ документы сразу во ВСЕХ коллекциях?

Да, он делает это. Снимок будет содержать все из всех коллекций и вложенных коллекций с именем «open_orders».

Вы не должны предполагать, что документы каким-либо образом сгруппированы. Если вам нужен заказ, вы должны явно упорядочить документы по какому-либо общему полю, которое у них есть.

Если вам нужна какая-то группировка, основанная на вложенности вложенной коллекции, вы должны сделать это самостоятельно, просмотрев каждый документ, а затем выяснить, к какой группе он принадлежит. Возможно, вы хотите изучить ref поле DocumentReference каждого снимка DocumentSnapshot, чтобы узнать, откуда он взялся, сгруппировать их самостоятельно, а затем повторить группы.

Комментарии:

1. Ах, прямо из уст лошади. Обожаю Переполнение Стека! Спасибо @Doug. Теперь я задаюсь вопросом, каков был бы наилучший подход для сбора конкретных данных, относящихся ко всем заказам для определенной коллекции, поскольку мне понадобятся отдельные переменные для каждой коллекции… (Назад в темноту)