Skip to main content

EntityIdStrategy

AutoIncrementIdStrategy

An id strategy which uses auto-increment integers as primary keys for all entities. This is the default strategy used by Vendure.

Signature
class AutoIncrementIdStrategy implements EntityIdStrategy<'increment'> {
readonly primaryKeyType = 'increment';
decodeId(id: string) => number;
encodeId(primaryKey: number) => string;
}

primaryKeyType

property

decodeId

method
(id: string) => number

encodeId

method
(primaryKey: number) => string

EntityIdStrategy

The EntityIdStrategy determines how entity IDs are generated and stored in the database, as well as how they are transformed when being passed from the API to the service layer and vice versa.

Vendure ships with two strategies: AutoIncrementIdStrategy and UuidIdStrategy, but custom strategies can be used, e.g. to apply some custom encoding to the ID before exposing it in the GraphQL API.

info

This is configured via the entityOptions.entityIdStrategy property of your VendureConfig.

caution

Note: changing from an integer-based strategy to a uuid-based strategy on an existing Vendure database will lead to problems with broken foreign-key references. To change primary key types like this, you'll need to start with a fresh database.

Signature
interface EntityIdStrategy<T extends 'increment' | 'uuid'> extends InjectableStrategy {
readonly primaryKeyType: T;
encodeId: (primaryKey: PrimaryKeyType<T>) => string;
decodeId: (id: string) => PrimaryKeyType<T>;
}

primaryKeyType

property
T

Defines how the primary key will be stored in the database - either 'increment' for auto-increment integer IDs, or 'uuid' for a unique string ID.

encodeId

property
(primaryKey: PrimaryKeyType<T>) => string

Allows the raw ID from the database to be transformed in some way before exposing it in the GraphQL API.

For example, you may need to use auto-increment integer IDs due to some business constraint, but you may not want to expose this data publicly in your API. In this case, you can use the encode/decode methods to obfuscate the ID with some kind of encoding scheme, such as base64 (or something more sophisticated).

decodeId

property
(id: string) => PrimaryKeyType<T>

Reverses the transformation performed by the encodeId method in order to get back to the raw ID value.

UuidIdStrategy

An id strategy which uses string uuids as primary keys for all entities. This strategy can be configured with the entityIdStrategy property of the entityOptions property of VendureConfig.

Example

import { UuidIdStrategy, VendureConfig } from '@vendure/core';

export const config: VendureConfig = {
entityOptions: {
entityIdStrategy: new UuidIdStrategy(),
// ...
}
}
Signature
class UuidIdStrategy implements EntityIdStrategy<'uuid'> {
readonly primaryKeyType = 'uuid';
decodeId(id: string) => string;
encodeId(primaryKey: string) => string;
}

primaryKeyType

property

decodeId

method
(id: string) => string

encodeId

method
(primaryKey: string) => string