Chaves naturais e lookups
Um registro pode ser endereçado por uma chave legível como about-us além de seu id. Os lookups adicionam outras chaves únicas a um modelo, então um handle ou um SKU encontra o registro em uma única consulta tipada.
Chaves naturais
Uma chave natural é um endereço opcional e legível para um registro, retornado como _naturalKey. É um único segmento seguro para URL, formado por letras, dígitos, hifens, sublinhados, pontos e til. Você pode ler um registro pela chave no GraphQL, no SDK e na CLI, e uma leitura que não encontra nada retorna null. A chave está sempre disponível para filtrar e ordenar.
Colisões e renomeações
Defina a chave ao criar o registro. Se outro registro do modelo já a tiver, a criação ainda assim é bem-sucedida e o Fóir acrescenta um sufixo (about-1, about-2), então leia a chave de volta na resposta. Renomear é uma mutation separada. Ela é recusada quando outro registro tem a nova chave, e o id do registro nunca muda.
Lookups
Um lookup é uma chave nomeada extra em um modelo, declarada no seu arquivo de configuração com keyBy. Cada um gera uma consulta tipada que retorna um registro ou null: um lookup no SKU de um produto dá a você productBySku. Um lookup pode combinar até quatro campos, e um modelo pode ter até quatro lookups. Os campos devem ser campos de nível superior dos tipos text, integer, decimal, boolean ou enum.
Uma consulta de lookup corresponde ao valor da variante que está sendo servida ao chamador, e aceita locale como argumento.
Unicidade e backfill
Os lookups são únicos e indexados. Salvar um registro cujo valor de lookup colide com o de outro é recusado, e o erro indica o modelo, o lookup e seus campos. O console sinaliza o conflito inline.
Adicionar um lookup a um modelo que já tem registros faz o backfill no push. Se registros existentes tiverem valores duplicados, o push para e o lookup não é adicionado.
Leia os detalhes
O guia de lookups cobre como declarar um lookup, a consulta que ele gera, chaves compostas e erros de conflito.