Cloud Functions용 ​​Cloud Firestore 트리거의 eventId를 사용해야 하는 등함수의 일부 사례에 대한 검증

Cloud Functions용 ​​Cloud Firestore 트리거는 1회 이상으로 불릴 수 있으며 여러 번 호출해도 괜찮은 디자인이 필요합니다.
※ PUSH 통지를 쓰는 처리를 쓰고 있었다고 해서 2회 불리면 2회 통지가 날아버립니다.

이벤트는 항상 한 번 이상 처리되지만 하나의 이벤트에서 함수가 여러 번 호출될 수 있습니다. "정확하게 한 번"메카니즘에 의존하는 것은 피해, 멱등이 되도록(듯이) 함수를 기술해 주세요.
htps : // 푹 빠져라. 오, ぇ. 코 m / 드 cs / 훙 c 치온 s / 푹신 s 트레 ㄔ

Idempotent (해야 할 등)에 대해서는, 이쪽도 참고까지입니다.
몇 번 불려도 결과가 친숙해지도록 정도의 의미군요.
htps : //에서 ゔぇぺぺr. 어쩌면. 오 rg / 자 / 도 cs / G

글쎄, 그렇게하기위한 팁은 여기에 있습니다.
htps : // c ぉ d. 오, ぇ. 코 m / b ぉ g / p 로즈 cts / 세르 ゔ ぇ r ぇ s / c ぉ 우 푹 c 치 온 s pp 로치 ps - 펑 c 치온 s

위의 자료에 따르면 eventId를 사용하면 좋을 것 같습니다.
export const notifyToAdmin = functions.firestore
  .document('articles/{articleID}')
  .onCreate(async (snap, context) => {
    console.log(context.eventId)
})

이 eventID를 첫 번째 처리 중에 Firestore에 저장하십시오.
2회째 이후는 그 값이 있으면 처리를 그만두게 하면 좋을 것 같네요.

글쎄! 이번에 신경이 쓰인 것은
export const notifyToAdmin = functions.firestore
  .document('articles/{articleID}')
  .onCreate(async (snap, context) => {
    console.log("notifyToAdmin:", context.eventId)
})

export const notifyToUsers = functions.firestore
  .document('articles/{articleID}')
  .onCreate(async (snap, context) => {
    console.log("notifyToUsers:", context.eventId)
})

이와 같이 같은 문서의 변경에 대해서 트리거를 설정했을 경우에
eventID가 다른 것이 될까 하는 것입니다.

만약 친숙해져 버리면, 방금전의 대응책은 실수라는 것이 됩니다.
결과의 로그는 이렇게 되었습니다.



도중까지 ID는 함께입니다만 마지막 숫자로 구별하고 있는 것 같네요!
이러한 경우에서도 eventID를 이용하여 멱등이 되는 함수를 만들 수 있는 것을 확인할 수 있었습니다.

마지막으로 eventID를 Unique로 Firestore에 쓸 때의 참고 기사를 소개합니다.
eventID가 보존되는 것이 반드시 1회로 하는 것으로 함수가 2회 실행되어 버리는 것을 막을 수 있습니다.
Cloud Firestore에서 유니크를 실현하는 두 가지 방법과 그 구분

좋은 웹페이지 즐겨찾기