Функции Firestore-Cloud получают имя файла верхнего слоя - PullRequest
0 голосов
/ 06 апреля 2019

Хорошего дня.Первый;Я хотел бы поблагодарить этого пользователя.https://stackoverflow.com/a/52982781/11320646 Я хочу, чтобы вы знали, что я новичок в написании кода.Я должен тренировать проект.Функция этих кодов (включая ссылку, «решение») такова:

customers/{id} подсчитывает потребителей здесь и записывает здесь: metadatas/customers, {count:123456}.

Но я хочу добавитьсчетчик здесь:

groups/{groupID}/posts/{postID}

и я должен написать здесь счет:

metadatas/{groupID}/counts, {count:123456}

Но эти коды пишут:

metadatas/posts, {count:123456} 

Как добавить слой groupID?

Я пробовал много вещей, но у меня ничего не получилось.

Я успешно закончил подсчет с этими кодами, я активировал опцию повтора, если она не удалась.Я получил отличный результат.В то же время было добавлено более 100 постов, и результат отличный.мои коды здесь:

const executeOnce = (change, context, task) => {
    const eventRef = firestore.collection('events').doc(context.eventId);

    return firestore.runTransaction(t =>
        t
         .get(eventRef)
         .then(docSnap => (docSnap.exists ? null : task(t)))
         .then(() => t.set(eventRef, { processed: true }))
    );
};

const documentCounter = collectionName => (change, context) =>
    executeOnce(change, context, t => {
        // on create
        if (!change.before.exists && change.after.exists) {
            return t
                    .get(firestore.collection('counts')
                    .doc(collectionName))
                    .then(docSnap =>
                        t.set(docSnap.ref, {
                            count: ((docSnap.data() && docSnap.data().count) || 0) + 1
                        }));
        // on delete
        } else if (change.before.exists && !change.after.exists) {
            return t
                     .get(firestore.collection('counts')
                     .doc(collectionName))
                     .then(docSnap =>
                        t.set(docSnap.ref, {
                            count: docSnap.data().count - 1
                        }));
        }

        return null;
    });
exports.customersCounter = functions.firestore
    .document('denemeicerikler/{grupID}/icerikler/{postID}')
    .onWrite(documentCounter('icerikler'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...