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

Я смотрю это видео, чтобы обновить данные в базе данных в реальном времени, используя транзакцию: https://www.youtube.com/watch?v=TPKA88_FmkA, но кажется, что транскрипция недоступна в облачной функции Firestore?

поэтому у меня есть такие данные в хранилище, и я хочу обновить rankPoint при добавлении нового посетителя во вложенную коллекцию. enter image description here

вот код, который я использую для запуска функции:

const functions = require('firebase-functions');
const admin = require('firebase-admin')
admin.initializeApp()


exports.increasePointWhenAddingNewAttendee = functions.firestore
    .document('Events/{eventId}/Attendee/{userId}')
    .onCreate((snap, context) => {

        const eventID = context.params.eventId
        const eventRef = snap.ref.firestore.collection('Events').doc(eventID)

        // increase rankPoint
        return eventRef.transaction(rankPoint => {
            return rankPoint + 1
        })



    });

но он не работает должным образом, из журнала сказано: enter image description here

1 Ответ

0 голосов
/ 02 сентября 2018

Видео, которое вы смотрите, о триггерах базы данных в реальном времени, которые сильно отличаются от триггеров Firestore. У них нет одинакового API.

Если вы хотите выполнить транзакцию с Firestore, вам нужно вызвать runTransaction для объекта Firestore, а не для объекта DocumentReference. Пожалуйста, ознакомьтесь с документацией для транзакций Firestore . Опять же, способ работы с Firestore отличается от базы данных в реальном времени.

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