Как сделать запрос числа из документов и объединить все это в родительский документ в firestore, используя функции firebase - PullRequest
0 голосов
/ 15 января 2019

У меня есть коллекция документов, и у меня есть функция, которая подсчитывает каждый документ и сохраняет счет в родительский документ и обновляется каждый раз, когда создается новый документ.Я хотел запросить это поле и добавить его в родительский документ, чтобы подвести итог.Мне нужна помощь, чтобы придумать код, который запрашивает все поля из разных документов и суммирует все это в родительском документе

Вот мой код, который считает каждый документ и сохраняет его как поле документа

const yearId = context.params.yearId; 
const daysId = context.params.daysId;
const monthId = context.params.monthId;
const ticketsId = context.params.ticketsId;

// ref to the parent document
//const docRef = admin.firestore().collection('TrafficViolations').doc(TrafficViolationsId)
const docRef = admin.firestore().collection('stats').doc(yearId).collection('months').doc(monthId).collection('days').doc(daysId)

// get all comments and aggregate
return docRef.collection('tickets')
     .get()
     .then(querySnapshot => {

        // get the total comment count
        const tickets = querySnapshot.size       

        // data to update on the document
        const data = { tickets }

        // run update
        return docRef.update(data)
     })
     .catch(err => console.log(err) )

Структура моего пожарного депо

1 Ответ

0 голосов
/ 19 января 2019

Что касается доступа к документам на снимке запроса, этот ответ показывает хороший способ сделать это.

С точки зрения эффективности, вместо циклического суммирования и суммирования каждого значения, вы можете использовать функцию просмотра документов заявок на изменения.

OnCreate -> может ничего не делать

OnEdit -> diff по старому и новому счетам получает документ родительского дня и обновляет итоги с помощью diff в транзакции.

OnDelete -> Аналогично OnEdit, просто удалите значение из общей суммы документа родительского дня.

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

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