Initial commit
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
# Provisioning Firestore Enterprise Native Mode
|
||||
|
||||
## Manual Initialization
|
||||
|
||||
Initialize the following firebase configuration files manually. Do not use `npx -y firebase-tools@latest init`, as it expects interactive inputs.
|
||||
|
||||
1. **Create a Firestore Enterprise Database**: Create a Firestore Enterprise database using the Firebase CLI.
|
||||
2. **Create `firebase.json`**: This file contains database configuration for the Firebase CLI.
|
||||
3. **Create `firestore.rules`**: This file contains your security rules.
|
||||
4. **Create `firestore.indexes.json`**: This file contains your index definitions.
|
||||
|
||||
### 1. Create a Firestore Enterprise Database
|
||||
|
||||
Use the following command to create a Firestore Enterprise database:
|
||||
|
||||
```bash
|
||||
firebase firestore:databases:create my-database-id \
|
||||
--location="nam5" \
|
||||
--edition="enterprise" \
|
||||
--firestore-data-access="ENABLED" \
|
||||
--mongodb-compatible-data-access="DISABLED"
|
||||
```
|
||||
|
||||
This will create an enterprise database in `nam5` with native mode enabled. A database id is required to create an enterprise database and the database id must not be `(default)`. To enable realtime-updates feature, use `--realtime-updates` flag.
|
||||
|
||||
```bash
|
||||
firebase firestore:databases:create my-database-id \
|
||||
--location="nam5" \
|
||||
--edition="enterprise" \
|
||||
--firestore-data-access="ENABLED" \
|
||||
--mongodb-compatible-data-access="DISABLED" \
|
||||
--realtime-updates="ENABLED"
|
||||
```
|
||||
|
||||
### 2. Create `firebase.json`
|
||||
|
||||
Create a file named `firebase.json` in your project root with the following content. If this file already exists, instead append to the existing JSON:
|
||||
|
||||
```json
|
||||
{
|
||||
"firestore": {
|
||||
"rules": "firestore.rules",
|
||||
"indexes": "firestore.indexes.json",
|
||||
"edition": "enterprise",
|
||||
"database": "my-database-id",
|
||||
"location": "nam5"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. Create `firestore.rules`
|
||||
|
||||
Create a file named `firestore.rules`. A good starting point (locking down the database) is:
|
||||
|
||||
```
|
||||
rules_version = '2';
|
||||
service cloud.firestore {
|
||||
match /databases/{database}/documents {
|
||||
match /{document=**} {
|
||||
allow read, write: if false;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
*See [security_rules.md](security_rules.md) for how to write actual rules.*
|
||||
|
||||
### 3. Create `firestore.indexes.json`
|
||||
|
||||
Create a file named `firestore.indexes.json` with an empty configuration to start:
|
||||
|
||||
```json
|
||||
{
|
||||
"indexes": [],
|
||||
"fieldOverrides": []
|
||||
}
|
||||
```
|
||||
|
||||
*See [indexes.md](indexes.md) for how to configure indexes.*
|
||||
|
||||
|
||||
## Deploy rules and indexes
|
||||
```bash
|
||||
# To deploy all rules and indexes
|
||||
firebase deploy --only firestore
|
||||
|
||||
# To deploy just rules
|
||||
firebase deploy --only firestore:rules
|
||||
|
||||
# To deploy just indexes
|
||||
firebase deploy --only firestore:indexes
|
||||
```
|
||||
|
||||
## Local Emulation
|
||||
|
||||
To run Firestore locally for development and testing:
|
||||
|
||||
```bash
|
||||
firebase emulators:start --only firestore
|
||||
```
|
||||
|
||||
This starts the Firestore emulator, typically on port 8080. You can interact with it using the Emulator UI (usually at http://localhost:4000/firestore).
|
||||
Reference in New Issue
Block a user