programing

"error": "Index not defined, add.indexOn"

css3 2023. 6. 24. 09:27

"error": "Index not defined, add.indexOn"

Firebase에 다음과 같은 데이터베이스를 만들었습니다.

database structure

이제 REST 클라이언트로 이동하여 다음 쿼리를 발행합니다.

https://movielens3.firebaseio.com/movieLens/users.json?orderBy="age"&startAt=25&print=pretty

오류가 발생합니다.

"error": "Index not defined, add ".indexOn": "age", for path "/movieLens/users", to the rules"

규칙 섹션에서 다음 규칙을 정의합니다.

{
    "rules": {
        "users" : {
          ".indexOn": ["age", "gender", "occupation", "zipCode"]
        },
        ".read": true,
        ".write": true
    }
}

하지만 여전히 같은 오류가 발생합니다.

다음에 대한 인덱스를 정의하고 있습니다./users하위 노드가 없습니다.users트리의 루트 바로 아래에 있기 때문에 인덱스가 비어 있습니다.

문의하신 이후/movieLens/users바로 여기서 인덱스를 정의해야 합니다.

{
    "rules": {
        "movieLens": {
            "users" : {
                ".indexOn": ["age", "gender", "occupation", "zipCode"]
            },
            ".read": true,
            ".write": true
        }
    }
}

댓글에 있는 문제 업데이트:

사용자의 연령을 문자열로 저장하고 있으므로 숫자로 필터링할 수 없습니다.해결책은 데이터를 수정하고 숫자로 저장하는 것입니다.

하지만 그 동안 이 쿼리는 어느 정도 효과가 있습니다.

https://movielens3.firebaseio.com/movieLens/users.json?orderBy="age"&equalTo="35"

JavaScript에서:

ref
  .orderByChild('age')
  .startAt('35')
  .limitToFirst(3)
  .once('value', function(s) { 
    console.log(JSON.stringify(s.val(), null, '  ')); 
  }, function(error) { 
    if(error) console.error(error); 
  })

"어느 정도"는 숫자가 아닌 어휘적 정렬을 한다는 것입니다.실제 솔루션을 위한 데이터를 수정합니다.

데이터를 배열로 저장하여 데이터를 구성하는 Firebase 지침도 무시합니다.이것은 이미 REST API에서 나에게 문제를 일으키고 있었고, 그래서 나는 그것을 떨어뜨렸습니다.print=prettyJavaScript 개발자를 위한 Firebase 프로그래밍 가이드를 처음부터 끝까지 읽고 거기에 있는 조언을 따르는 것을 강력히 추천합니다.이제 몇 시간이면 문제가 발생하는 것을 막을 수 있습니다.

언급URL : https://stackoverflow.com/questions/34968413/error-index-not-defined-add-indexon