2017-11-17 7 views
0

Cloud Firestore Function 로그보기에서이 오류가 발생합니다. 나는 자바 스크립트와 경우 FireStore에 새로 온 사람이Cloud Firestore 기능 오류가 발생하는 이유는 무엇입니까?

TypeError: event.data.previous.data is not a function at exports.onVisitorPres...

exports.onVisitorPresenceWrite = functions.database 
    .ref("/VISITORS_PRESENCE/{uid1}/{uid2}").onWrite((event) => { 
     // Get the data written or deleted on the Realtime Database 
     var eventStatus = event.data.val(); 
     const previousData = event.data.previous.data(); 
     // If the onWrite event is a delete event then use previousData 
     if(eventStatus == null){ 
      eventStatus = previousData; 
     } 
    }); 

내가이 중포 기지 실시간에 .onWrite((event)을 사용하고 싶은 것은 databas 키와 경우 FireStore 기능 트리거에 대한 몇 가지 조언을 사용할 수
때 키 항목 삭제되고 새 항목이 추가 될 때 나는 내가 eventStatus == null을 확인할 수 있습니다 생각 즉 데이터

+1

[Firestore] (https://firebase.google.com/docs/functions/firestore-events)와 [Realtime Database] (https://firebase.google.com/docs)를 혼동/혼합하는 것 같습니다./functions/database-events)가 여기에서 트리거됩니다 - 코드 예제는 실시간 데이터베이스를위한 것이지만 질문에는 Firestore가 언급됩니다. – Grimthorr

답변

3

event 변수가 Event의 인스턴스이며, 따라서 event.data를 호출하는 경우 FireStore에 대한 DeltaDocumentSnapshot를 반환합니다 (이 ?? 삭제 도착하기 전에) 나는 단순히 previousData을 사용하여 삭제 될 때 및 실시간 데이터베이스에 대한 DeltaSnapshot.

이러한 델타 스냅 샷을 사용하면 이전 값을 previous으로 가져올 수 있습니다.이 값은 쓰기 이벤트가 트리거되기 전의 이전 상태를 포함하는 또는 DeltaSnapshot을 다시 반환합니다. 당신의 예에서

, 당신은 event.data.previousdata()를 지원하지 않는 DeltaSnapshot을 반환합니다 의미 중포 기지 실시간 데이터베이스 트리거를 사용하여, 대신 val()을 지원하고 있습니다. 당신이 var eventStatus = event.data.val();과 함께했던이 경우

, 당신은 previousval()를 호출해야합니다

const previousData = event.data.previous.val(); 

당신이 경우 FireStore 트리거를 사용하려고하는 대신에, 당신이를 변경해야

이에
functions.database.ref("[...]") 

:

functions.firestore.document("[...]") 

그런 다음 event.data.previous.data()을 사용할 수 있습니다.

+0

이상한 단어 "val()"이이 페이지에 언급되지 않았습니다 [functions firestore-events] (https://firebase.google.com/docs/functions/firestore-events) – Erik

+1

사실 나는 무슨 일이 일어 났는지보고 있습니다. [Firebase Realtime Database onwrite 트리거] (https://firebase.google.com/docs/functions/database-events)에 대한 편집 된 답변을 참조하십시오. – Grimthorr

+0

Thansk Grimthorr 예. 당신이 바로 알았습니다. – Erik

관련 문제