Listar operações estaduais
O provedor de estado dispõe de operações de lista para armazenar o estado.
Observação: Esses exemplos utilizam vcr.getInstanceState() para o estado compartilhado entre todas as réplicas. Para o estado por conversa, use vcr.createSessionWithId(id) com um UUID determinístico do contexto da solicitação (por exemplo, conversation_uuid de um retorno de chamada de voz). Nunca use vcr.createSession() em âmbito global — veja Provedor de estado: escopo da sessão para mais detalhes.
Colocar os elementos no início da lista
Usando o nome de uma lista, você pode adicionar um elemento no início dela.
Assinatura do método
listPrepend<T>(list: string, value: T)
Inserindo elementos no início da lista
await state.listPrepend("list", "bar");
await state.listPrepend('list', 'bar')
Inserir elementos no final da lista
Usando o nome de uma lista, você pode adicionar um elemento ao final dela.
Assinatura do método
listAppend<T>(list: string, value: T)
Inserindo elementos no final da lista
await state.listAppend("list", "foo");
await state.listAppend('list', 'foo')
Inserir um elemento em posição relativa
É possível adicionar um elemento a uma lista antes ou depois de um elemento já existente. O before O booleano é usado para decidir se o elemento deve ser colocado antes (true) ou depois de (false) o pivot valor (o elemento existente).
Assinatura do método
listInsert<T>(list: string, before: boolean, pivot: T, value: T)
Inserção relativa de um elemento
await state.listInsert('list', false, 'foo', 'bar');
await state.listInsert('list', false, 'foo', 'bar')
Substituir o valor de um elemento em um índice específico
É possível sobrescrever o valor de um elemento em um índice específico. É necessário que já haja um valor no position especificado.
Assinatura do método
listSet<T>(list: string, position: number, value: T)
Substituindo o valor de um elemento em um índice específico
await state.listSet('list', 0, 'foo');
await state.listSet('list', 0, 'foo')
Obter um elemento em um índice específico
É possível obter um elemento em um índice específico.
Assinatura do método
listIndex<T>(list: string, position: number)
Como obter um elemento em um índice específico
const element = await state.listIndex('list', 0);
element = await state.listIndex('list', 0)
Obter o tamanho de uma lista
Usando o nome de uma lista, é possível obter o comprimento dela.
Assinatura do método
listLength(list: string)
Como obter o comprimento de uma lista
const listLength = await state.listLength("list");
listLength = await state.state.listLength('list')
Obter os elementos de uma lista usando um intervalo
Usando o nome de uma lista e um intervalo, é possível obter os elementos contidos no intervalo especificado.
Assinatura do método
listRange<T>(list: string, startPos: number, endPos: number)
Como obter os elementos de uma lista usando um intervalo
const elements = await state.listRange("list", 0, 2);
elements = await state.listRange('list', 0, 2)
Remover elementos da lista
É possível remover elementos de uma lista especificando um valor. Opcionalmente, é possível indicar um número para controlar quantos elementos serão removidos caso haja duplicatas.
Assinatura do método
listRemove<T>(list: string, value: T, count?: number)
Remoção de elementos da lista
await state.listRemove('list', 'foo');
await state.listRemove('list', 'foo')
Elementos “Pop” no início da lista
É possível retirar elementos do início de uma lista e recebê-los de volta. Opcionalmente, você pode passar um count para remover mais de um elemento por vez.
Assinatura do método
listStartPop<T>(list: string, count?: number)
Removendo elementos do início da lista
await state.listStartPop("list");
await state.listStartPop('list')
Elementos pop no final da lista
É possível remover elementos do final de uma lista e recebê-los de volta.
Assinatura do método
listEndPop<T>(list: string, count?: number)
Removendo elementos do final da lista
await state.listEndPop("list");
await state.listEndPop('list', 'bar')
Reduzir uma lista
É possível remover elementos de uma lista especificando um intervalo. Os elementos removidos não vai será devolvido a você.
Assinatura do método
listTrim<T>(list: string, startPos: number, endPos: number)
Reduzir uma lista
await state.listTrim("list", 0, 1);
await state.listTrim('list', 0, 1)