id, createdAt, updatedAt, deletedAt, createdBy, updatedBy, position, searchVector
Como no declaras estos campos con defineField(), no hay ninguna constante universalIdentifier que puedas importar. Entonces, ¿cómo haces referencia a createdAt como una columna en una vista?
Problema
Desde Twenty 2.19, el identificador universal de un campo de sistema se deriva de forma determinista en el servidor a partir de tres entradas: el identificador universal de la aplicación, el identificador universal del objeto y el nombre del campo. Inventar un id y ponerlo de forma fija en el código no funcionará: no coincide con nada en el servidor y la sincronización rechaza la referencia colgante:La solución
getFieldUniversalIdentifier está disponible a partir de twenty-sdk 2.21.getFieldUniversalIdentifier para resolver exactamente el mismo valor que utiliza el servidor. Toma las tres entradas y devuelve el identificador universal del campo:
applicationUniversalIdentifieres el identificador de tu aplicación, el que pasas adefineApplication().objectUniversalIdentifieres el identificador del objeto al que pertenece el campo.namees el nombre del campo de sistema, uno de los valores enumerados arriba.
Ejemplo: una columna createdAt en una vista
El caso típico es añadir una columnacreatedAt a una vista de uno de tus objetos personalizados. Resuelve el id del campo y haz referencia a él como a cualquier otro fieldMetadataUniversalIdentifier:
src/views/example-view.ts
fieldMetadataUniversalIdentifier: campos de vista, filtros, ordenaciones, agrupaciones y widgets de diseño de página.
Resuelve el id, no lo pongas de forma fija en el código. Como el servidor deriva el valor a partir
del id de la aplicación, el id del objeto y el nombre del campo, llamar a
getFieldUniversalIdentifier mantiene tu referencia correcta incluso si esas
entradas cambian, y evita desviaciones si la derivación evoluciona en algún momento.Objetos estándar de Twenty
Para un objeto estándar de Twenty (Persona, Compañía, Oportunidad, …), no necesitas derivar nada: los identificadores de los campos de sistema son constantes precalculadas que puedes importar directamente.getFieldUniversalIdentifier cuando el objeto es uno que tu aplicación define con defineObject(), donde no existe tal constante.
name es un campo predeterminado, no un campo de sistema. Conserva su propio identificador universal fijo
y no se resuelve mediante
getFieldUniversalIdentifier. En los objetos que defines, haz referencia al campo
name mediante el identificador que le diste en defineObject().