2016-09-20 2 views
0

문서를 읽은 후에도 Firebase의 push() 기능에 대해 혼란스러워합니다. 그들은 다음 코드 제공 :Firebase push()와 메인 스레드

// Generate a reference to a new location and add some data using push() 
var newPostRef = postsRef.push(); 
// Get the unique ID generated by push() 
var postID = newPostRef.key(); 

합니까 푸시() (따라서 메인 쓰레드 보온재 - 스마트없는 것 같다) 고유 ID를 얻기 위해 서버 쿼리를 수행을, 또는 단순히 "더러운"독특한을 만들 않습니다 나중에 서버의 마스터 원장과의 고유성을 확인하는 ID입니까? 문서는 ID의 견고성에 대해 분명하지 않은 것처럼 보입니다. 그래서 확인하고 싶습니다.

+1

ID가 현재 시간을 기반으로한다는 인상을 받았는데, 초당 수천 건의 요청이없는 한 충돌 가능성이 매우 낮습니다. 그래서 전체 스토리가 아닌 것 같습니다 ... – qxz

답변

0

Firebase의 push() 메소드는 순수한 클라이언트 측 메소드입니다. 현재 시간 (서버로부터의 로컬 시계의 최종 알려진 오프셋에 대해 수정 됨) 및 많은 임의 정보를 기반으로 키를 생성합니다. 생성하는 키는 통계적으로 고유 한 것으로 보장됩니다.

이러한 키에 대한 자세한 내용은 The 2^120 Ways to Ensure Unique Identifiers 블로그 게시물을 참조하십시오.

+0

아,이 방법과 Parse의 더러운 필드 방법에 대한 의견이 있으십니까? 둘 다 정말 기능적으로 보입니다. –

+2

아니, 두 가지를 비교할 때 추가 할 것이 없습니다. 충돌을 두려워하는 경우 : 필자는 Firebase를 오랫동안 사용해 왔으며 푸시 ID의 충돌을 본 적이 없으며 (보고도 들리지 않았습니다.) 처음 UUID에 대해 배웠던 때와 같습니다. 처음에는 그들을 신뢰하는 것이 매우 불편합니다. 그러나 잠시 후에 "통계적으로 보장 된"가능성이 매우 높다는 것을 알게됩니다. –