programing

Firestore에서 보안 및 인덱스 규칙을 내보내는 방법은 무엇입니까?

javajsp 2023. 6. 18. 12:10

Firestore에서 보안 및 인덱스 규칙을 내보내는 방법은 무엇입니까?

파이어스토어 개발 데이터베이스에 여러 인덱스를 설정했습니다.이제, 나는 그것들을 수출하고 싶습니다.firestore.indexes.json제품 환경을 설정하는 과정이 더 쉬워질 것입니다.Firebase CLI를 사용하여 인덱스를 내보낼 수 있는 방법이 있습니까?보안 규칙도 마찬가지로 적용되지만 복사하여 붙여넣을 수 있습니다.

가능해요!

에서 실행firebase firestore:indexes방화벽 프로젝트 폴더 안에 있습니다.

CLI를 통해 이미 인덱스를 설정하고 Firebase에 로그인한 경우 복사할 수 있도록 포맷된 JSON 출력이 제공됩니다.

예:

{
  "indexes": [
    {
      "collectionId": "teslaData",
      "fields": [
        {
          "fieldPath": "Model",
          "mode": "ASCENDING"
        },
        {
          "fieldPath": "Price",
          "mode": "ASCENDING"
        }
      ]
    }
  ]
}

내보낸 인덱스는 다음을 사용하여 다시 가져올 수 있습니다.firebase deploy --only firestore:indexes다음 문서 추출을 확인합니다.

https://firebase.google.com/docs/firestore/query-data/indexing

Firebase CLI를 사용하여 인덱스를 배포할 수도 있습니다.시작하려면 프로젝트 디렉토리의 firestore에서 firebase를 실행합니다.설정하는 동안 Firebase CLI는 올바른 형식의 기본 인덱스로 JSON 파일을 생성합니다.파일을 편집하여 인덱스를 추가하고 firebase deploy 명령을 사용하여 배포합니다.인덱스만 배포하려면 --only firestore:indexes 플래그를 추가합니다.Firebase 콘솔을 사용하여 인덱스를 편집할 경우 로컬 인덱스 파일도 업데이트해야 합니다.

CLI Firebase CLI를 4.2.1그게 도움이 된다면요

편집: 현재도 작동 중입니다.9.6.0.

Firebase 프로젝트 폴더에서 터미널에서 다음을 실행합니다.

firebase firestore:indexes > firestore.indexes.json

그리고 인덱스와 함께 firestore.indexes.json이라는 파일을 저장합니다.

그런 다음 해당 파일을 다른 Firebase 프로젝트에 업로드할 수 있습니다.

현재 프로젝트에서 Firestore 보안 규칙을 가져오기 위한 API가 없는 것 같습니다.CLI를 통해 규칙을 배포할 수 있으며, 이 규칙은 사용자 지정 노드 스크립트에 포함되어 CI 프로세스에서 호출될 수도 있습니다.하지만 프로젝트에서 규칙을 읽을 수 있는 API는 없는 것으로 알고 있습니다.

기능 요청을 제출해야 하는 좋은 이유인 것 같습니다.

프로젝트 파일은 이렇게 배치됩니다.

myProjectFolder

  • .firebaserc
  • firebase.json
  • firestore.indexes.json
  • functions

  • 을 합니다.firebase use myApp-dev그리고나서firebase firestore:indexes > firestore.indexes.json현재 개발 프로젝트의 인덱스를 파일로 내보내려면 다음과 같이 하십시오.

    • myApp-dev그리고.myApp-prod ID입니다."는 "프로젝트 ID"입니다.파이어베이스에서 찾으려면 "프로젝트 개요" --> 프로젝트 설정 --> 일반 탭 옆의 톱니바퀴를 클릭하십시오(아래 참조).

줄서기firebase.json내보낸 것을 가리키는지 확인합니다.firestore.indexes.json인덱스의 경우:

{
  "functions": [
    {
      "source": "functions",
      "codebase": "default",
      "ignore": [
        "node_modules",
        ".git",
        "firebase-debug.log",
        "firebase-debug.*.log"
      ],
      "predeploy": [
        "npm --prefix \"$RESOURCE_DIR\" run lint",
        "npm --prefix \"$RESOURCE_DIR\" run build"
      ]
    }
  ],
  "firestore": {
    "indexes": "firestore.indexes.json"
  }
}
  • 명령 실행firebase use myApp-prod그리고.firebase deploy --only firestore:indexes

승인된 답변이 Firestore 인덱스에 대해 작동하지 않는 경우(권한 오류가 발생했습니다), Firebase 콘솔 > Cloud firestore > Index로 이동한 다음 inspector에서 네트워크 탭을 열고 모든 요청을 지우고 페이지를 새로 고칠 수 있습니다.페이지가 로드되면 네트워크 요청의 XHR 필터에서 인덱스의 JSON 형식 응답(네트워크 탭의 검색란에서 'indexes'라는 단어를 검색하여 내 것을 찾았습니다)을 찾을 수 있습니다.색인처럼 보여야 해요?key=...' 이 JSON 응답을 복사할 수 있습니다.

프로젝트에서 이미 파이어베이스를 초기화한 경우firebase init프로젝트의 firestore.dll.json 파일에 붙여넣기만 하면 됩니다.그런 다음 각 이름 속성을 collectionGroup 속성으로 변경합니다.예:'name': 'projects/[your project name]...'로.'collectionGroup': '[name of collection for this index]'

달려.firebase deploy --only firestore:indexes텍스트 편집기에서 변경한 내용을 파이어스토어 인덱스 탭으로 다시 업데이트합니다.

파이어스토어 보안 규칙의 경우 파이어베이스 콘솔에 표시된 규칙을 복사하여 프로젝트의 firestore.dll 파일에 붙여넣을 수 있습니다.

견본의firestore.indexes.json파일

{
  "indexes": [
    {
      "collectionGroup": "faq",
      "queryScope": "COLLECTION",
      "fields": [
        {
          "fieldPath": "searchKeywords",
          "arrayConfig": "CONTAINS"
        },
        {
          "fieldPath": "answered",
          "order": "ASCENDING"
        },
        {
          "fieldPath": "relevanceScore",
          "order": "ASCENDING"
        },
        {
          "fieldPath": "__name__",
          "order": "ASCENDING"
        }
      ]
    }
  ]
}

Cloud Firestore Index Definition Reference 페이지에 방법이 표시됩니다.

파이어베이스를 사용하여 CLI로 인덱스를 내보낼 수 있습니다.firestore:indexes.

언급URL : https://stackoverflow.com/questions/52778542/how-to-export-security-and-index-rules-from-firestore