Como Usar as Fórmulas every() e some() do Notion para Predicados de Array
🔍 WiseChecker

Como Usar as Fórmulas every() e some() do Notion para Predicados de Array

As fórmulas do Notion permitem filtrar e testar dados dentro de um banco de dados. As funções every() e some() verificam se todos ou pelo menos um item em um array atende a uma condição. Sem essas funções, você precisaria escrever lógica aninhada complexa para testar vários valores. Este artigo explica como usar every() e some() com predicados de array no Notion. Você aprenderá a sintaxe, como escrever funções de predicado e onde essas fórmulas funcionam melhor.

Principais Conclusões: every() e some() para Predicados de Array

  • every(predicado): Retorna verdadeiro apenas se cada elemento do array passar no teste do predicado.
  • some(predicado): Retorna verdadeiro se pelo menos um elemento do array passar no teste do predicado.
  • Função de predicado: Uma função que recebe um item do array como argumento e retorna um booleano. Exemplo: current > 5.

ADVERTISEMENT

O Que São every() e some() no Notion

As fórmulas do Notion funcionam dentro de propriedades de banco de dados. As funções every() e some() pertencem à categoria de array. Elas aceitam dois argumentos: um array e uma função de predicado. A função de predicado é escrita inline usando a palavra-chave current para se referir ao elemento atual do array.

O array pode vir de uma rollup, de uma fórmula que retorna um array ou de uma propriedade de seleção múltipla convertida em array. every() retorna verdadeiro apenas quando cada elemento satisfaz a condição. some() retorna verdadeiro quando pelo menos um elemento satisfaz a condição. Ambas as funções retornam um valor booleano: verdadeiro ou falso.

Você precisa de um banco de dados do Notion com pelo menos uma propriedade que produza um array. Fontes comuns são rollups com valores, propriedades de seleção múltipla ou propriedades de fórmula que geram listas. Sem uma entrada de array, every() e some() retornarão um erro.

Passos para Usar every() e some() em uma Fórmula

Siga estes passos para adicionar uma propriedade de fórmula que use every() ou some(). O exemplo verifica se todas as prioridades de tarefas em uma rollup estão acima de um limite.

  1. Crie uma propriedade de rollup que retorne um array de números
    No seu banco de dados, adicione uma propriedade Rollup. Defina a propriedade de origem como uma coluna numérica no banco de dados relacionado. Defina a agregação da rollup como “Mostrar original” ou “Mostrar únicos”. Isso produz um array de valores.
  2. Adicione uma propriedade de Fórmula
    Clique no botão + na última coluna do banco de dados. Selecione “Fórmula” na lista de tipos de propriedade. Nomeie a propriedade como “Todas Alta Prioridade” ou “Alguma Alta Prioridade”.
  3. Escreva a fórmula every()
    No editor de fórmulas, digite: every(prop("Valores de Prioridade"), current > 2). Substitua “Valores de Prioridade” pelo nome da sua propriedade de rollup. Isso verifica se cada valor de prioridade é maior que 2.
  4. Escreva a fórmula some()
    Em uma propriedade de fórmula separada, digite: some(prop("Valores de Prioridade"), current > 2). Isso retorna verdadeiro se pelo menos um valor de prioridade exceder 2.
  5. Teste as fórmulas com dados de exemplo
    Adicione algumas linhas no banco de dados relacionado com diferentes números de prioridade. Verifique se a fórmula retorna os valores booleanos esperados. Para every(), todos os valores devem passar no teste. Para some(), apenas um valor precisa passar.

Usando every() com Propriedades de Seleção Múltipla

Propriedades de seleção múltipla não são arrays por padrão. Para usá-las com every() ou some(), converta-as usando a função map(). Por exemplo:

every(prop("Tags").map(current), current != "Urgente")

Isso verifica se nenhuma das tags é “Urgente”. O .map(current) converte a seleção múltipla em um array de strings. Em seguida, every() aplica o predicado a cada string.

Usando some() com Arrays de Datas

Você pode testar arrays de datas vindos de rollups. Por exemplo, verifique se alguma data em uma rollup está no passado em relação a hoje:

some(prop("Datas de Vencimento"), current < now())

Isso retorna verdadeiro se qualquer data de vencimento for anterior à data e hora atuais. A função now() retorna o timestamp atual. O predicado compara cada data com esse timestamp.

ADVERTISEMENT

Erros Comuns e Limitações

Função de Predicado Usa a Palavra-chave Errada

A função de predicado deve usar current para se referir ao elemento do array. Usar prop() dentro do predicado causará um erro. Por exemplo, every(prop("Números"), prop("Números") > 5) é inválido. A forma correta é every(prop("Números"), current > 5).

Entrada de Array Não é Realmente um Array

Se a propriedade que você passar para every() ou some() for um valor único, o Notion retornará um erro. Certifique-se de que a propriedade de origem seja uma rollup configurada como “Mostrar original” ou uma fórmula que gere um array. Uma propriedade de número ou texto simples não funcionará.

Array Vazio Retorna Verdadeiro para every()

Quando o array está vazio, every() retorna verdadeiro porque não há elementos que falhem no predicado. Esse é um comportamento lógico chamado verdade vacuosa. Se você precisar lidar com arrays vazios de forma diferente, adicione uma verificação: if(empty(prop("Array")), false, every(prop("Array"), current > 5)).

some() com Array Vazio Retorna Falso

Um array vazio faz com que some() retorne falso porque nenhum elemento pode passar no predicado. Isso é consistente com a lógica padrão de arrays. Se você precisar de um valor padrão diferente, envolva a fórmula com um bloco if() como mostrado acima.

every() vs some(): Comportamento e Casos de Uso

Item every() some()
Valor retornado quando todos os elementos passam verdadeiro verdadeiro
Valor retornado quando pelo menos um falha falso verdadeiro se pelo menos um passar
Valor retornado quando o array está vazio verdadeiro falso
Caso de uso comum Validar que todos os itens atendem a um limite Verificar se algum item atende a uma condição
Exemplo de predicado current >= 10 current < 0

Use every() quando precisar aplicar uma regra a todos os itens. Por exemplo, garantir que todas as tarefas em um projeto tenham o status “Concluída”. Use some() quando precisar que apenas um item dispare uma condição. Por exemplo, sinalizar um projeto se alguma tarefa estiver atrasada.

Ambas as funções funcionam com números, datas, strings e booleanos. O predicado deve retornar um valor booleano. Se o predicado retornar um não booleano, o Notion tentará convertê-lo. Para melhores resultados, escreva predicados que retornem explicitamente verdadeiro ou falso.

ADVERTISEMENT