Creazione e utilizzo delle chiavi di entità

Ogni entità in Datastore ha una chiave che la identifica in modo univoco. La chiave è costituita dai seguenti componenti:

  • Lo spazio dei nomi dell'entità, che consente la multitenancy
  • Il tipo dell'entità, che la classifica ai fini delle query Datastore
  • Un percorso degli antenati facoltativo che individua l'entità all'interno della gerarchia di Datastore.
  • Un identificatore per la singola entità, che può essere
    • una stringa key name
    • un ID numerico intero

Poiché l'identificatore fa parte della chiave dell'entità, è associato in modo permanente all'entità e non può essere modificato. Assegni l'identificatore in uno dei due modi seguenti:

  • Specifica la tua stringa key name per l'entità.
  • Consenti a Datastore di assegnare automaticamente all'entità un ID numerico intero.

Specificare un nome di chiave per un'entità

Per assegnare un nome di chiave a un'entità, fornisci un argomento stringID non vuoto a datastore.NewKey:

// Create a key with a key name "asalieri".
key := datastore.NewKey(
	ctx,        // context.Context
	"Employee", // Kind
	"asalieri", // String ID; empty means no string ID
	0,          // Integer ID; if 0, generate automatically. Ignored if string ID specified.
	nil,        // Parent Key; nil means no parent
)

Per consentire a Datastore di assegnare automaticamente un ID numerico, utilizza un argomento stringID vuoto:

// Create a key such as Employee:8261.
key := datastore.NewKey(ctx, "Employee", "", 0, nil)
// This is equivalent:
key = datastore.NewIncompleteKey(ctx, "Employee", nil)

Assegnazione degli identificatori

Puoi configurare Datastore per generare ID automatici utilizzando due diverse norme per gli ID automatici:

  • Il criterio default genera una sequenza casuale di ID non utilizzati che sono distribuiti in modo approssimativamente uniforme. Ogni ID può contenere fino a 16 cifre decimali.
  • Il criterio legacy crea una sequenza di ID interi più piccoli non consecutivi.

Se vuoi mostrare gli ID entità all'utente e/o dipendere dal loro ordine, la cosa migliore da fare è utilizzare l'allocazione manuale.