как обновлять весь мой документ каждый день в firestore, используя облачную функцию - PullRequest
0 голосов
/ 24 сентября 2019

Я создаю приложение со списком задач в Android Studio, которое сохраняет задачи в FireStore, я назначил каждому из них список мертвых строк и хочу каждое утро проверять, достигну ли я крайнего срока, я пытаюсь сделать это с облаком, проблема в том,что я не могу найти, как получить весь документ по определенному пути и сделать некоторые проверки и переписать изменения

Я загружаю node.js и инициализирую Firebase, и я также попытался сделать это в консоли, но у него нет этогоопция

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

const admin = require('firebase-admin');
admin.initializeApp();
// Create and Deploy Your First Cloud Functions
// https://firebase.google.com/docs/functions/write-firebase-functions

 exports.scheduledFunctionCrontab = functions.pubsub.schedule('0 0 6 * *')
//  .timeZone('America/New_York') // Users can choose timezone - default is America/Los_Angeles
  .onRun((context) => {

const overdueSnap = admin.firestore().collection('tasks')
  .where('overdue','==',false)
  .where('due_time', '=<', new Date()).getTime();

await Promise.all(overdueSnap.docs.map((doc) => doc.ref.update({color: true}));

console.log('This will be run every day at 6 AM Eastern!');
return null;

});

1 Ответ

0 голосов
/ 24 сентября 2019

Ваш вопрос немного расплывчатый, но звучит так, как будто вы хотите запросить все просроченные документы и обновить их.Я предполагаю, что вы сохраняете даты выполнения как метки времени в поле due_time, и вы хотите пометить поле overdue как true, когда задача просрочена.Вы можете сделать что-то вроде:

exports.scheduledFunctionCrontab = functions.pubsub
  .schedule('0 0 6 * *')
  .onRun(async (context) => {
     const overdueSnap = await admin.firestore().collection('tasks')
       .where('overdue','==',false)
       .where('due_time' '<=', new Date()).get();

     await Promise.all(overdueSnap.docs.map((doc) => doc.ref.update({overdue: true}));
  });

Этот код выполняет следующие действия:

  1. Находит все документы с due_time в прошлом, которые еще не имеют overdueпомеченный как true.
  2. Обновляет каждый из этих документов параллельно, устанавливая overdue в true.

Ваши особенности могут отличаться, но это общий подход ктип проблемы, которую вы описываете.

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