Tengo un esquema grande con ~70 tablas y muchas de ellas conectadas entre sí (194 @directivas de conexión) como esta:
type table1 @model { id:ID! name: String! ... table2: table2 @connection } type table2 @model { id:ID! .... }Esto funciona bien. Ahora mi cantidad de datos está creciendo constantemente y necesito poder consultar los resultados y ordenarlos.
He leído varios artículos y encontré uno que me da el consejo de crear una directiva @key para generar un GSI con 2 campos para poder decir "Filtrar los resultados de acuerdo con mi propiedad de filtro, ordenarlos por el campo "nombre" y regresar las primeras 10 entradas, el resto accesible a través del parámetro nextToken"
Así que traté de agregar un GSI como este:
type table1 @model @key(name: "byName", fields:["id","name"], queryField:"idByName"){ id:ID! name: String! ... table2: table2 @connection }corriendo
amplify push --minifyrecibo el error
Attempting to add a local secondary index to the table1Table table in the table1 stack. Local secondary indexes must be created when the table is created. An error occured during the push operation: Attempting to add a local secondary index to the table1Table table in the table1 stack. Local secondary indexes must be created when the table is created.¿Por qué crea un LSI en lugar de un GSI? ¿Hay alguna forma de agregar directivas @key a las tablas después de haberlas creado y llenado? Hay tantos conjuntos de datos de diferentes tablas vinculados entre sí, por lo que configurar un nuevo esquema llevaría mucho tiempo.
El modo de facturación es PAY_PER_REQUEST si esto tiene algún impacto.
¿Alguna idea de cómo proceder?
¡Gracias por adelantado!
Saludos cristiano
Si está utilizando un entorno nuevo, primero elimine la carpeta #current-cloud-backend.
Luego, amplify init creó la carpeta nuevamente pero, por desgracia, con solo un archivo en ella, amplifica-meta.json.