# Firebase Cloud Firestone

**Com o módulo Firebase Cloud Firestore é possível criar, atualizar, buscar e apagar documentos em um banco de dados do Firebase.**

<figure><img src="https://3829578295-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRWteFkm020DS5IbXoSgj%2Fuploads%2FxehjHLvMIaL0zSlcAhtf%2Fimage.png?alt=media&#x26;token=718572f5-a3c6-441d-ac79-c80193bd889b" alt=""><figcaption><p>Imagem 1 - Módulo Firebase Cloud Firestone aberto.</p></figcaption></figure>

#### Detalhes do módulo

Para usar o conector, você precisará informar os seguintes parâmetros:

* **database**: o nome do banco de dados do Firestore (geralmente `default`).
* **operation**: a operação que deseja executar:
  * `create` → cria ou sobrescreve um documento com o ID fornecido.
  * `push` → cria um documento com ID automático gerado pelo Firebase.
  * `get` → busca o conteúdo de um documento.
  * `update` → atualiza campos de um documento existente.
  * `delete` → apaga um documento.
* **path**: caminho da coleção/documento (ex.: `users/john.doe` ou apenas `users`).
* **body**: objeto JSON com os dados a serem gravados (obrigatório para `create`, `update` e `push`).

⚠️ **Atenção**: O Firestore **não cria documentos intermediários automaticamente**. Para inserir dados em uma subcoleção (`users/albert.einstein/posts`), o documento pai (`albert.einstein`) deve existir previamente.

***

#### Exemplos de uso

**CREATE (ID fixo)**

```json
{
  "operation": "create",
  "database": "default",
  "path": "staging-test/qa-001",
  "body": { "name": "Lucas QA", "status": "active" }
}
```

**PUSH (ID automático)**

```json
{
  "operation": "push",
  "database": "default",
  "path": "staging-test",
  "body": { "name": "Teste push", "status": "active" }
}
```

**GET (buscar documento)**

```json
{
  "operation": "get",
  "database": "default",
  "path": "staging-test/qa-001"
}
```

**UPDATE (editar campos)**

```json
{
  "operation": "update",
  "database": "default",
  "path": "staging-test/qa-001",
  "body": { "status": "inactive" }
}
```

**DELETE (apagar documento)**

```json
{
  "operation": "delete",
  "database": "default",
  "path": "staging-test/qa-001"
}
```

***

#### Caso de uso

Suponha que você precise registrar novos pedidos em um banco de dados.\
No fluxo, configure o módulo Firestore da seguinte forma:

1. Escolha a operação `push`.
2. Defina o caminho `orders`.
3. Insira no campo `body` os dados do pedido em JSON:

```json
{ "item": "notebook", "quantity": 1, "status": "pending" }
```

O Firestore criará automaticamente um documento com ID único dentro da coleção `orders`.

***

#### Dicas e boas práticas

* Use IDs simples (ex.: `qa-001`) para facilitar testes.
* Após usar `push`, confira na resposta qual ID foi criado.
* Se ocorrer erro em `collectionPath`, valide se o caminho está correto:
  * Para `push` → use só a **coleção** (ex.: `staging-test`).
  * Para `create`, `get`, `update` e `delete` → use **coleção/documento** (ex.: `staging-test/qa-001`).
* Erro **permission denied**: configure as regras de segurança do Firestore ou use uma conta com permissão.
* Certifique-se de que o **body** seja sempre um JSON válido
