Как записать все документы в коллекции Firestore с помощью облачных функций? - PullRequest
0 голосов
/ 06 июля 2019

Мы работаем над приложением, которое использует Firebase Firestore.Каждый день в полночь мы хотели бы установить для свойства counter значение 1 для каждого User документа в коллекции.

Облачные функции казались разумным выбором для этого,и мы быстро нашли способ для планирования облачных функций:

exports.incrementCounterNightly = functions.pubsub.schedule('0 0 * * *')
  .timeZone('Europe/London')
  .onRun((context) => {
  console.log('This will be run every day at 00:00 AM London Time!');
});

Путь к документам, в которые мы хотели бы написать, - это коллекции / пользователи /*.

Наши вопросы:

  • Как лучше всего достичь этого в облачных функциях?
  • Это то, чего облачные функции могут достичь?
  • Является ли это масштабируемым?Что если коллекция пользователей увеличится до 100 000 или даже до 5 000 000 документов?

Заранее большое спасибо,

Ed

1 Ответ

1 голос
/ 06 июля 2019

Из-за затрат и ограничений в программировании, я думаю, вам следует рассмотреть возможность структурирования ваших данных по-другому.

То, что вы могли бы сделать для своего варианта использования, - это не просто подсчитать количество «суперликов», использованных впользователь, но, возможно, хранит ежедневные суперлики в отдельном документе с датой.

Так что, если вы хотите узнать, сколько супер лайков использовал пользователь сегодня, вы можете запросить субколлекцию «супер лайки» пользователей.есть один документ с датой последнего суперлика и количеством использованных.

Так что при запросе, сколько они использовали сегодня ... получите документ, если у него другая дата, чем 0 (потому что это не сегодняшняя дата), если она имеет сегодняшнюю дату, посмотрите на счет.Либо установите счетчик на 1, а дату на сегодняшнюю дату.Или просто увеличьте счет даты уже сегодня.

Дайте мне знать, если у вас есть какие-либо вопросы о том, что я пытался объяснить.

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