Is this what you are after? ???
Hi @jggomez ,
Sure. I agree with you that it is challenging. Being schema-free is amazing for evolving a data model and capturing data as it exists, but is not fun for building a UI.
Normalizing property values (making every
date either a number or an ISO string) is essential. That either happens in the DBMS as a migration, as a transformation in middleware, or at the surface in the UI.
The "card view" in Neo4j Bloom is a data driven form. The fields and field types are derived from the data. The Bloom "Perspective" establishes expected data types. Without that, it's hard to know what the user would expect with arbitrary data.
This is a great advantage of layering GraphQL on Neo4j. You get a data layer with predictable types, and Cypher at your disposal when you want to reach deeper. Which is another way of saying I would not recommend dynamic forms which directly access Neo4j. Use a middle layer, then build forms against that.
If you're interested in the schema of your schema-free (schema-optional...) database, you can use APOC commands to get the information needed to generate your forms:
CALL apoc.meta.schema- Gives you a single map which contains
relationshipsand their properties.
CALL apoc.meta.data()- will give you the same information in rows
apoc.meta.cypher.types(n)- Will give you the type of an existing property or properties for a node/relationship
The can see the full list here or by running