# #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. Теперь я задаюсь вопросом, каков был бы наилучший подход для сбора конкретных данных, относящихся ко всем заказам для определенной коллекции, поскольку мне понадобятся отдельные переменные для каждой коллекции… (Назад в темноту)