2017-10-27 1 views
0

왜 쿼리 페이지 매김이 서버 라이브러리 (java/nodejs 등)에서 지원되지 않습니다. 서버 측에서 대형 데이터 세트를 통해 페이징을 찾고 있습니다. GAE/J와 유사하게 클라이언트에 보낼 수있는 websafe 커서를 사용하는 것이 바람직합니다. 사전에Firestore : 커서를 사용하여 페이징

감사합니다,

답변

1

서버의 SDK는주의와 매김 같은 것을 지원하지.

웹, Android 및 iOS SDK를 사용하면 문서 스냅 샷을 쿼리의 커서로 사용할 수 있습니다 (startAfter 사용). 예상했던대로 작동합니다. 서버 SDK는 값 집합을 대신 지정해야합니다. 값이 고유하면이 방법이 유용합니다. 하지 않을 경우, 그것은 중복과 값이 현재 배치의 마지막 요소가 될 수 있기 때문에 안전하지 않습니다 :

current: 998, 999, 1000 | next: 1000, 1001, 1002 

startAfter를 사용하여 결과의 ​​다음 배치의 첫 번째 요소 (1000) 건너 뛸 것입니다. 당신은 결과를 startAt를 사용 unioning에 의해이 문제를 해결할 수 있지만, 배치 크기보다 중복 값의 이상이있는 경우 지정, 당신이 박히 수 :

current: 1000, 1000, 1000 | next: 1000, 1001, 1002 

여기에 클라우드 경우 FireStore에서 paginating data with query cursors에 대한 자세한입니다.

+0

감사합니다. 나는 페이징을 위해 다음을 생각하고있다. 타임 스탬프로 콜렉션을 정렬하고 한계를 이라고 설정하고 100으로 지정하고 마지막 요소의 타임 스탬프를 다음 쿼리의 startAt로 사용하십시오. 이 방법에 문제가 있습니까? 도와 줘서 고마워. – sowdri

+0

안녕하세요. 기꺼이 도와 드리겠습니다. 두 가지 우려 사항 : 1. 이럴 것 같지는 않지만 100 개의 동일한 타임 스탬프가있는 것은 아닙니다. 맞습니까? 그렇지 않으면 두 번째 문제에 직면하게됩니다. 2. 타임 스탬프에주의하십시오. 높은 볼륨에서는 순차 값 (초당 500, https://firebase.google.com/docs/firestore/quotas)을 사용하여 쓰기 제한을 실행할 수 있습니다. –

+0

(이것을 고려해 보면 이것을 대답으로 표시하는 것을 잊지 마십시오 :) –