Búsqueda de sitios web

typescript - Amplify autocompletar propietario en clave


Estoy usando la API de AWS Amplify (según entiendo, esto es AWS AppSync y Amplify DataStore) con TypeScript.

He creado un tipo de GraphQL

type PrivateNote
  @model
  @auth(rules: [{ allow: owner, ownerField: "owner" }])
  @key(fields: ["owner", "id"]) {
  owner: String!
  id: ID!
  content: String!
}

Nota el @auth que especifica ownerField: "owner" y el @key incluyendo owner.

El objetivo de ese tipo es que solo los creadores ("propietario") puedan ver/actualizar/eliminar sus datos y que la clave primaria generada de DynamoDB sea ["propietario", "id"].

Usando el tipo como se indica arriba, puedo generar el código con éxito usando

for backend code
amplify api gql-compile
for frontend code
amplify codegen model --nodownload

El problema es que ahora tengo que establecer explícitamente al propietario al crear instancias de PrivateNote como

const n = new PrivateNote({ 
   content: "my content", 
   owner: "the-owner-id" 
});

Si no establezco el owner, el compilador de TypeScript se queja y también hay un error en tiempo de ejecución que dice

La propiedad 'owner' falta en el tipo ...

Antes de establecer el @key en el esquema de GraphQL (y por lo tanto también omitirlo en la lista de campos de PrivateNote), no tenía que establecer owner, se hacía automáticamente en segundo plano.

Entonces, ¿cómo puedo agregar el propietario a un @key y aún así tenerlo autocompletado? ¿Y qué se necesita cambiar para que las tipificaciones de TypeScript se generen en consecuencia?