왜 쿼리 페이지 매김이 서버 라이브러리 (java/nodejs 등)에서 지원되지 않습니다. 서버 측에서 대형 데이터 세트를 통해 페이징을 찾고 있습니다. GAE/J와 유사하게 클라이언트에 보낼 수있는 websafe 커서를 사용하는 것이 바람직합니다. 사전에Firestore : 커서를 사용하여 페이징
감사합니다,
왜 쿼리 페이지 매김이 서버 라이브러리 (java/nodejs 등)에서 지원되지 않습니다. 서버 측에서 대형 데이터 세트를 통해 페이징을 찾고 있습니다. GAE/J와 유사하게 클라이언트에 보낼 수있는 websafe 커서를 사용하는 것이 바람직합니다. 사전에Firestore : 커서를 사용하여 페이징
감사합니다,
서버의 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에 대한 자세한입니다.
감사합니다. 나는 페이징을 위해 다음을 생각하고있다. 타임 스탬프로 콜렉션을 정렬하고 한계를이라고 설정하고 100으로 지정하고 마지막 요소의 타임 스탬프를 다음 쿼리의 startAt로 사용하십시오. 이 방법에 문제가 있습니까? 도와 줘서 고마워. –
sowdri
안녕하세요. 기꺼이 도와 드리겠습니다. 두 가지 우려 사항 : 1. 이럴 것 같지는 않지만 100 개의 동일한 타임 스탬프가있는 것은 아닙니다. 맞습니까? 그렇지 않으면 두 번째 문제에 직면하게됩니다. 2. 타임 스탬프에주의하십시오. 높은 볼륨에서는 순차 값 (초당 500, https://firebase.google.com/docs/firestore/quotas)을 사용하여 쓰기 제한을 실행할 수 있습니다. –
(이것을 고려해 보면 이것을 대답으로 표시하는 것을 잊지 마십시오 :) –