2017-12-05 1 views
0

Firebase 데이터베이스가 있고 일부 기능이 구현되었습니다. 예를 들어, /lists/{list_id}/이 작성되면 함수는 자동으로 /lists/{list_id}/created_on을 현재 시간 소인으로 설정합니다.Firebase 기능을 트리거하지 않고 파일에서 데이터베이스 가져 오기

파일에서 데이터베이스를 가져올 때 Firebase가 여전히 모든 기능을 실행하므로 모든 목록에 대해 created_on이 현재 타임 스탬프로 설정되어 있습니다.

나는 또한 물건을 추가 할 때 이메일을 보내는 기능을 가지고 있으며, 나는 그것들을 발사하기를 원하지 않는다.

어떻게 피할 수 있습니까? 모든 기능을 트리거하지 않고 파일에서 db를 복원하려고합니다.

+1

추한 해결 방법을 찾았습니다. https://console.cloud.google.com/functions/로 이동하여 모든 기능을 삭제하십시오. 파일에서 db를 가져온 다음 재배포하십시오. 그것은 추악합니다. 왜냐하면 1) 장래에 DB를 정말로 복구해야 할 때 잊어 버릴 확률이 높습니다. 2) 재배포가 필요합니다 : 사용 안함/사용 설정이 훨씬 쉽습니다 ... 더 좋은 방법이 있습니까 ?? – user2145097

답변

0

실제 사용자가 프로젝트를 사용하고 있지 않은 완전히 깨끗한 상태에서 복원하고 있습니까? 이 경우 빈 index.js를 배포하여 모든 기능의 배포를 취소하고 가져 오기를 수행 한 다음 모든 기능을 다시 배포하십시오. 이것은 Firebase CLI로 모두 달성 할 수 있어야합니다.

영향을 미치지 않으려는 제품이 합법적으로 사용되는 동안 가져올 레코드가있는 경우 일정 시간 동안 기능을 해제하지 않는 것이 좋습니다. 대신 가져 오기 데이터를 마사지하여 특정 필드가 처리하는 데 필요한 모든 기능을 제외하고 해당 함수가 해당 자식이 있는지 확인하도록 지정하는 자식을 추가 할 수 있습니다. 나중에 그 아이를 삭제할 수 있습니다.

+0

손상으로 인해 백업 파일에서 데이터베이스를 복원했습니다 (나중에 다시 발생할 수 있음). 따라서 '아이 플래그'를 추가하는 것은 저에게 효과가 없습니다. 특정 키 (예 :/internal/make_sure_functions_are_off)를 만들 때 트리거 될 함수를 추가하고 전체 db를 삭제하고 "db를 복원하기 전에 함수를 삭제하지 않았습니다."라는 메시지로 교체합니다. 이 특수 키는 항상 db에 있습니다. 이렇게하면 다시 복원하고 기능을 삭제하는 것을 잊어 버린 경우 유용한 알림을 받게됩니다. 그러나 그것은 단지 해결책 일 뿐이며 실제 해결책은 아닙니다 ... – user2145097

관련 문제