如何解决orderByChild的Firebase未指定索引错误?

问题描述 投票:0回答:1

我收到以下错误:

FIREBASE警告:使用未指定的索引。您的数据将在客户端上下载并过滤。考虑在/ questions的安全规则中添加“ .indexOn”:“ answers / dodzzdzodzdz”,以获得更好的性能。我尝试了一切,但仍然无法正常工作?

我的数据库规则:

 {
  "rules": {
    ".read": false,
    ".write": false,

    "questions": {
      ".read": "auth != null",
      ".write": "auth != null",
        ".indexOn": ["answers/uid","author","timestamp"],
       "answers":{
          "$uid":{
         ".indexOn":["uid","question"] ,   
      }

       }

我的代码:

 const ref = FirebaseRef.child('questions');

    const UID = Firebase.auth().currentUser.uid;

    ref
      .orderByChild('answers/' + UID)
      .limitToLast(this.state.limit)
      .once('value', snapshot => {
        console.log('FireB ', snapshot);

我的数据库:

       "my_answers" : {
    "yrpgRXZ8LMbzGbBGs3M0WZ1V0WY2" : {
      "-LswFeY4lyIvX4DFFNue" : {
        "answers" : "Www",
        "date_add" : 1572970139448,
        "question" : "2"
      }
    }
  },
  "my_questions" : {
    "9jNkvzr0chgPi0SC6rXMlVWdOF12" : {
      "-LswFbyh-SP_vuj13MK_" : {
        "date_add" : 1572969021413,
        "question" : "1"
      },
      "-LswFeY4lyIvX4DFFNue" : {
        "date_add" : 1572969031933,
        "question" : "2"
      }
    }
  },
  "questions" : {
    "-LswFbyh-SP_vuj13MK_" : {
      "author" : "9jNkvzr0chgPi0SC6rXMlVWdOF12",
      "date_add" : 1572969021413,
      "question" : "1"
    },
    "-LswFeY4lyIvX4DFFNue" : {
      "answer" : {
        "yrpgRXZ8LMbzGbBGs3M0WZ1V0WY2" : {
          "answer" : "Www",
          "date_add" : 1572970139448
        }
      },
      "author" : "9jNkvzr0chgPi0SC6rXMlVWdOF12",
      "date_add" : 1572969031933,
      "question" : "2"
    }
  },

除了这个错误,更普遍的是,在该数据库中,会有用户发布问题,而响应者也回答问题!所以我做了一个my_questions来按用户列出问题,my_answers来按回答者列出答案,以及问题公开列表,当响应者回答这个问题时,谁会得到更新(添加answer:),有很多重复的数据,但是我读过与firebase有关的事情?

firebase firebase-realtime-database firebase-security-rules
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.