id, createdAt, updatedAt, deletedAt, createdBy, updatedBy, position, searchVector
Como você não declara esses campos com defineField(), não existe nenhuma constante universalIdentifier para você importar. Então, como você referencia createdAt como uma coluna em uma visualização?
O Problema
Desde o Twenty 2.19, o identificador universal de um campo de sistema é derivado deterministicamente pelo servidor a partir de três entradas: o identificador universal do aplicativo, o identificador universal do objeto e o nome do campo. Inventar um id e deixá-lo hardcoded não funciona: ele não corresponde a nada no servidor, e a sincronização rejeita a referência pendente:A Solução
getFieldUniversalIdentifier está disponível a partir do twenty-sdk 2.21.getFieldUniversalIdentifier para resolver exatamente o mesmo valor que o servidor usa. Ela recebe as três entradas e retorna o identificador universal do campo:
applicationUniversalIdentifieré o identificador do seu app, aquele que você passa paradefineApplication().objectUniversalIdentifieré o identificador do objeto ao qual o campo pertence.nameé o nome do campo de sistema, um dos valores listados acima.
Exemplo: uma coluna createdAt em uma visualização
O caso típico é adicionar uma colunacreatedAt a uma visualização de um dos seus objetos personalizados. Resolva o id do campo e referencie-o como qualquer outro fieldMetadataUniversalIdentifier:
src/views/example-view.ts
fieldMetadataUniversalIdentifier: campos de visualização, filtros, ordenações, agrupamentos e widgets de layout de página.
Resolva o id, não o deixe hardcoded. Como o servidor deriva o valor a partir do
id do aplicativo, do id do objeto e do nome do campo, chamar
getFieldUniversalIdentifier mantém a sua referência correta mesmo que essas
entradas mudem, e evita divergências se a derivação evoluir no futuro.Objetos Padrão do Twenty
Para um objeto padrão do Twenty (Person, Company, Opportunity, …), você não precisa derivar nada: os identificadores de campos de sistema são constantes pré-computadas que você pode importar diretamente.getFieldUniversalIdentifier quando o objeto é um que seu app define com defineObject(), em que não existe tal constante.
name é um campo padrão, não um campo de sistema. Ele mantém seu próprio identificador universal
hardcoded e não é resolvido por meio de
getFieldUniversalIdentifier. Em objetos que você define, referencie o campo
name pelo identificador que você atribuiu a ele em defineObject().