Функция Firestore Cloud запускается только при обновлении пути с новым целым - PullRequest
0 голосов
/ 19 июня 2019

У меня есть firestore база данных, которая выглядит следующим образом

/entries/ ....
/users/{userid}...

, куча документов отправляется в ... записей, а userid содержит 8 документов с информацией о профиле пользователя.

Моя проблема в том, что документ записей содержит часы поля и не имеет отношения к документу пользователя, который содержит поле weekly_capacity

Мне нужно объединить эти два поля часов / еженедельно, устанавливая ихв переменную эквивалентности на полный рабочий день

Но эквивалентность на полный рабочий день должна быть точной, и этот FTE компании может измениться, поэтому ему нужно будет рассчитать FTE за различные даты, даже если пользователь изменил свой статус FTE x числораз.

А текущее приложение извлекало записи только при входе пользователя в приложение, что может происходить всегда.

Ни один из запросов API, которые я использую, не даст мне json, которыйсодержит и weekly_capacity, и часы для одной и той же выборки.Если каждый раз, когда пользователь входит в систему, приложение firestore вызывает http для получения всех записей, то как сравнить поле hours в записях коллекции с полем weekly_capacity

Просто небольшой контекст: FTE =Эквивалентность на полный рабочий день и используется для измерения в качестве стандарта, чтобы увидеть, сравнивает ли сотрудник те базовые часы коммитов, на которые они подписаны, и которые составляют 40. Поэтому, если бы я согласился работать 40, а я работаю на самом деле 40 часов, тогда я был бы 1 всего FTE.Если я работал 20, и я предполагаю, что работать 40, я 0,5 FTE.Математика очень проста, просто в моей ситуации переменная FTE может измениться в любое время, и приложение позволит пользователю ввести диапазон дат, извлекающих общее количество фактически отработанных часов, и FTE, сообщая им, сколько часов они должны былиработа против того, сколько часов они фактически работали.Поскольку переменные меняются, мне нужен какой-то способ в firestore, чтобы отслеживать изменения и правильно агрегировать по фактически отработанным часам.В качестве примера ошибки: допустим, я изменил свой FTE с 1 на 0,7 марта 20 марта, затем я хочу сгенерировать отчет с 1 по 30 марта, в котором будет указано, что мои рабочие часы и значение статуса FTE означают, что я достиг своей цели.Кикер в том, что я не могу получить или объединить записи, которые содержат переменную hours и /users/, которые содержат переменную weekly_capacity.

Я даже не думаю, что облачная функция решит проблему, поскольку записи выбираются только тогда, когда пользователь входит в систему, верно?

1 Ответ

0 голосов
/ 19 июня 2019

Я предполагаю следующее для ответа на ваш вопрос.

Требование : Чтобы рассчитать FTE для пользователя, когда пользователь weekly_capacity обновляется или пользователь входит в систему.

Проблемы :

  1. Каким-то образом в пожарном депо отслеживать изменения.

  2. Правильно рассчитать FTE в соответствии с изменением.

Вот что, я думаю, решит проблемы.

  1. Google Cloud Firestore поддерживает приемники для коллекций, в которых вы храните данные.Таким образом, вы можете прослушать любое изменение в коллекции users и коллекции entries.Вот как вы можете отслеживать изменения.
  2. Чтобы рассчитать FTE, когда вносится изменение в weekly_capacity документа user или новая запись вносится в коллекцию entries, вам нужно запросить обе коллекции.отдельно, чтобы получить записи, соответствующие затронутому пользователю.Для этой цели вы также можете использовать запрос groups-group , но это зависит от вашей базы данных.

Надеюсь, это поможет.

...