como atualizar dados usando transação quando acionando onCreate usando a função de nuvem no Firestore?

votos
0

I assistir a este vídeo para atualizar dados no banco de dados em tempo real usando a transação: https://www.youtube.com/watch?v=TPKA88_FmkA , mas parece transcation não está disponível em função firestore nuvem?

então eu tenho dados firestore como este, e eu quero atualizar rankPoint quando novo participante é adicionado na subcoleção. digite

aqui está o código que eu uso para acionar a função:

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
        })



    });

mas ele não funcionar corretamente, a partir do log é dito: digite

Publicado 02/09/2018 em 05:36
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

O vídeo que você está assistindo é sobre Realtime gatilhos de banco de dados, que são muito diferentes, então gatilhos firestore. Eles não têm a mesma API.

Se você deseja realizar uma transação com Firestore, você precisa chamar runTransaction em um objeto Firestore, não um objeto DocumentReference. Consulte a documentação para transações firestore . Mais uma vez, a forma como ele trabalha com Firestore é diferente do tempo real base de dados.

Respondeu 02/09/2018 em 07:11
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more