Operações de estado da tabela
O provedor de estado dispõe de operações de tabela 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.
Definir valores da tabela
Usando o nome de uma tabela, você pode armazenar pares chave-valor para recuperá-los posteriormente.
Assinatura do método
mapSet(table: string, keyValuePairs: any)
Definição de valores de tabela
const state = vcr.getInstanceState();
const customer = req.body.customer;
await state.mapSet("customers", { [customer.number]: JSON.stringify(customer) });
state = vcr.getInstanceState()
customer = body['customer']
number = customer['number']
await state.mapSet('customers', { number: customer })
Incrementar os valores da tabela
Usando o nome e a chave de uma tabela, é possível incrementar seu valor.
Assinatura do método
mapIncrement(table: string, key: string, increment: number)
Incrementando os valores da tabela
const number = req.body.number;
await state.mapIncrement("customers", number, 1);
number = body['number']
await state.mapIncrement('customers', number, 1)
Obter um valor da tabela
Usando o nome de uma tabela e uma chave, é possível recuperar um valor.
Assinatura do método
mapGetValue<T>(table: string, key: string)
Obter um valor da tabela
const number = req.body.number;
const customer = await state.mapGetValue("customers", number);
number = body['number']
customer = await state.mapGetValue('customers', number)
Como obter valores de várias tabelas
Usando o nome de uma tabela e um array de chaves, é possível recuperar vários valores.
Assinatura do método
mapGetMultiple<T>(table: string, keys: string[])
Como obter valores de várias tabelas
const number = req.body.number;
const otherNumber = "447000000001";
const customers = await state.mapGetMultiple("customers", [number, otherNumber]);
number = body['number']
otherNumber = '447000000001'
customer = await state.mapGetMultiple('customers', [number, otherNumber])
Ler os valores da tabela
Ao definir um padrão, é possível percorrer uma tabela, começando em um cursor especificado.
Assinatura do método
mapScan(table: string, cursor: string, pattern: string, count: number)
Analisando os valores da tabela
const name = req.body.name;
await state.mapScan("customers", "0", name, 0);
name = body['name']
await state.mapScan('customers', '0', name, 0)
Obtendo todos os valores da tabela
Usando o nome de uma tabela, é possível recuperar todos os valores armazenados.
Assinatura do método
mapGetValues<T>(table: string)
Obtendo todos os valores da tabela
const customers = await state.mapGetValues("customers");
customers = await state.mapGetValues('customers')
Reserve uma mesa
Usando o nome de uma tabela, é possível recuperar toda a tabela.
Assinatura do método
mapGetAll<T>(table: string)
Reservar uma mesa
const customerNumberPairs = await state.mapGetAll("customers");
customerNumberPairs = await state.mapGetAll('customers')
Obter o comprimento de uma tabela
Usando o nome de uma tabela, é possível obter o comprimento da tabela.
Assinatura do método
mapLength<T>(table: string)
Como obter o comprimento de uma tabela
const tableLength = await state.mapLength("customers");
tableLength = await state.mapLength('customers')
Verificar se uma chave de tabela existe
Usando o nome de uma tabela e uma chave, é possível verificar se uma chave existe nessa tabela.
Assinatura do método
mapExists(table: string, key: string)
Verificando se uma chave de tabela existe
const number = req.body.number;
const isExistingCustomer = await state.mapExists("customers", number);
number = body['number']
isExistingCustomer = await state.mapExists('customers', number)
Excluir valores da tabela
Usando o nome de uma tabela e uma lista de chaves, é possível excluir valores.
Assinatura do método
mapDelete(table: string, keys: string[])
Exclusão de valores da tabela
const number = req.body.number;
await state.mapDelete("customers", [number]);
number = body['number']
await state.mapDelete('customers', [number])
Excluir uma tabela
Usando o nome de uma tabela, é possível excluir a tabela inteira.
Assinatura do método
delete(table: string)
Exclusão de uma tabela
await state.delete("customers");
await state.delete('customers')