2017-03-16 1 views
3

나는 Golang과 Firego를 사용하여 Firebase에서 타임 스탬프 목록을 얻으려고합니다. 정렬되지 않은 될 수 없습니다 vFirebase, Firego and orderBy

var v map[string]interface{} 
if err := f.StartAt("a").EndAt("c").LimitToFirst(8).OrderBy("field").Value(&v); err != nil { 
    log.Fatal(err) 
} 
fmt.Printf("%s\n", v) 

내가 완전히 뭔가를 분명 실종해야하지만입니다 :

문서는 제안? 지도 (for key, val := range v)를 반복 할 때 값은 액세스 순서가 undefined이므로 Firebase 호출에 대한 응답에서 전송 된 순서와 다를 수 있습니다.

무엇이 누락 되었습니까? 감사합니다

답변

1

결과지도는지도이기 때문에 정렬되지 않지만 원래 결과 (최고 8 개까지)는 제한 전에 정렬되므로 주문이 매우 중요 할 수 있습니다.

지도가 이런 종류의 결과에 나쁜 유형이라는 데 동의합니다. 결과가 json으로 돌아 오기 때문에지도를 사용하고있을 가능성이 있습니다 (이동지도와 달리 순서가 있지만). 그들은 순서를 유지하기 위해 일련의 결과를 반환해야합니다.

+0

좋아, 그래서 나는 화를 내고 있지 않다. 나는 지금까지 주문에 신경을 쓰는 사람이 아무도 없다는 것에 놀랐다. 프로젝트에 문제를 추가 할 것입니다. – supercalifragilistichespirali

+0

"이지만 원래 결과 (상위 8 개로 제한)가 주문됩니다."--- JSON 배열이나 JSON 객체로 반환 될까요? – zerkms

+1

* firebaser는 여기에 있습니다 * Firego는 Firebase의 REST API를 기반으로 작성되었으며 동일한 제한이 있습니다. JSON 객체를 노출하므로 결과는 본질적으로 정렬되지 않습니다. 따라서 'OrderBy'를 사용하는 유일한 이유는 데이터를 필터링하기 위해서입니다. [내 대답은 여기] (http://stackoverflow.com/questions/31808990/firebase-returning-keys-of-child-node-in-different-orders-on-different-devices-a/31812506#31812506)를 참조하십시오. Firebase SDK는 더 복잡한 데이터 구조를 반환하여 클라이언트에서 올바른 순서로 자식을 노출 할 수 있습니다. –