Biblioteca de clientes das Tabelas do Azure para JavaScript – versão 13.3.0
de Tabelas do Azure é um serviço baseado em nuvem que armazena dados estruturados do NoSQL, fornecendo um repositório de chave/atributo com um design sem esquema. O armazenamento de tabelas oferece aos desenvolvedores flexibilidade e escalabilidade com todas as melhores partes da nuvem do Azure.
Use a biblioteca de clientes para:
- Criar/excluir tabelas
- Consultar/criar/ler/atualizar/excluir entidades
O Azure Cosmos DB fornece uma API de Tabela para aplicativos gravados para o Armazenamento de Tabelas do Azure e que precisam de recursos premium como:
- Distribuição global turnkey.
- Taxa de transferência dedicada em todo o mundo.
- Latências de milissegundos de dígito único no percentil 99.
- Alta disponibilidade garantida.
- Indexação secundária automática.
- A biblioteca de clientes das Tabelas do Azure pode direcionar diretamente o armazenamento de tabelas do Azure ou os pontos de extremidade de serviço de tabela do Azure Cosmos DB sem alterações de código.
Links de chave:
- código-fonte
- do NPM (pacote
) - documentação de referência da API
- documentação do produto
- exemplos de
Introdução
Pré-requisitos
Ambientes com suporte no momento:
- Versões lts de Node.js
- Versões mais recentes do Safari, Chrome, Edge e Firefox
Você deve ter um
Instalar o pacote @azure/data-tables
A maneira preferida de instalar a biblioteca de clientes das Tabelas do Azure para JavaScript é usar o gerenciador de pacotes npm. Digite o seguinte em uma janela de terminal:
npm install @azure/data-tables
Autenticar um TableServiceClient
As Tabelas do Azure dão suporte a várias maneiras de autenticação. Para interagir com o serviço Tabelas do Azure, você precisará criar uma instância de um cliente de Tabelas – TableServiceClient
ou TableClient
por exemplo. Consulte exemplos para criar o TableServiceClient
para saber mais sobre autenticação.
Observação: o AAD (Azure Active Directory) só tem suporte para contas de Armazenamento do Azure.
- Cliente do Serviço com chave compartilhada
- cliente do Serviço com assinaturas de acesso compartilhado
- cliente de serviço com tokenCredential (AAD)
- cliente tabela com chave compartilhada
- cliente Table com assinaturas de acesso compartilhado
- Cliente tabela com TokenCredential (AAD)
Os seguintes recursos, interfaces, classes ou funções só estão disponíveis no Node.js
- Autorização de chave compartilhada com base no nome da conta e na chave da conta
AzureNamedKeyCredential
- Cadeia de conexão da conta.
Pacote JavaScript
Para usar essa biblioteca de clientes no navegador, primeiro você precisa usar um empacotador. Para obter detalhes sobre como fazer isso, consulte nossa documentação de agrupamento .
CORS
Você precisa configurar regras de
Por exemplo, você pode criar as seguintes configurações de CORS para depuração. Porém, personalize as configurações cuidadosamente de acordo com seus requisitos no ambiente de produção.
- Origens permitidas: *
- Verbos permitidos: DELETE, GET, HEAD, MERGE, POST, OPTIONS, PUT
- Cabeçalhos permitidos: *
- Cabeçalhos expostos: *
- Idade máxima (segundos): 86400
Principais conceitos
TableServiceClient
- Cliente que fornece funções para interagir em um nível de Serviço de Tabela, como criar, listar e excluir tabelasTableClient
- Cliente que fornece funções para interagir em um nível de entidade, como criar, listar e excluir entidades dentro de uma tabela.Table
- Tabelas armazenam dados como coleções de entidades.Entity
– entidades são semelhantes às linhas. Uma entidade tem uma chave primária e um conjunto de propriedades. Uma propriedade é um nome, par de valor digitado, semelhante a uma coluna.
Os usos comuns do serviço Tabela incluem:
- Armazenar TBs de dados estruturados capazes de atender aplicativos de escala da Web
- Armazenar conjuntos de dados que não exigem junções complexas, chaves estrangeiras ou procedimentos armazenados e podem ser des normalizados para acesso rápido
- Consultando rapidamente dados usando um índice clusterizado
- Acessando dados usando as expressões de filtro de protocolo OData
Exemplos
- Importar o pacote
-
Criar o cliente de serviço de tabela
- Listar tabelas no da conta
- Criar uma nova tabela
- Criar o cliente de tabela
Importar o pacote
Para usar os clientes, importe o pacote em seu arquivo:
const AzureTables = require("@azure/data-tables");
Como alternativa, importe seletivamente apenas os tipos necessários:
const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");
Criar o cliente do serviço Tabela
O TableServiceClient
requer uma URL para o serviço de tabela e uma credencial de acesso. Opcionalmente, ele também aceita algumas configurações no parâmetro options
.
TableServiceClient
com AzureNamedKeyCredential
Você pode criar uma instância de um TableServiceClient
com uma AzureNamedKeyCredential
passando o nome da conta e a chave da conta como argumentos. (O nome da conta e a chave de conta podem ser obtidos no portal do azure.) [DISPONÍVEL APENAS EM NODE.JS RUNTIME]
const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new AzureNamedKeyCredential(account, accountKey);
const serviceClient = new TableServiceClient(
`https://${account}.table.core.windows.net`,
credential
);
TableServiceClient
com TokenCredential (AAD)
O Azure Tables fornece integração com o Azure AD (Azure Active Directory) para autenticação baseada em identidade de solicitações para o serviço Tabela ao direcionar um ponto de extremidade de Armazenamento. Com o Azure AD, você pode usar o RBAC (controle de acesso baseado em função) para conceder acesso aos recursos da Tabela do Azure a usuários, grupos ou aplicativos.
Para acessar um recurso de tabela com um TokenCredential
, a identidade autenticada deve ter a função "Colaborador de Dados da Tabela de Armazenamento" ou "Leitor de Dados da Tabela de Armazenamento".
Com o pacote @azure/identity
, você pode autorizar diretamente solicitações em ambientes de desenvolvimento e produção.
Para saber mais sobre a integração do Azure AD no Armazenamento do Azure, consulte o Azure.Identity README
const { TableServiceClient } = require("@azure/data-tables");
const { DefaultAzureCredential } = require("@azure/identity");
// DefaultAzureCredential expects the following three environment variables:
// - AZURE_TENANT_ID: The tenant ID in Azure Active Directory
// - AZURE_CLIENT_ID: The application (client) ID registered in the AAD tenant
// - AZURE_CLIENT_SECRET: The client secret for the registered application
const credential = new DefaultAzureCredential();
const account = "<account name>";
const clientWithAAD = new TableServiceClient(
`https://${account}.table.core.windows.net`,
credential
);
TableServiceClient
com o token SAS
Além disso, você pode criar uma instância de um TableServiceClient
com uma SAS (assinaturas de acesso compartilhado). Você pode obter o token SAS no Portal do Azure.
const { TableServiceClient, AzureSASCredential } = require("@azure/data-tables");
const account = "<account name>";
const sas = "<service Shared Access Signature Token>";
const serviceClientWithSAS = new TableServiceClient(
`https://${account}.table.core.windows.net`,
new AzureSASCredential(sas)
);
Listar tabelas na conta
Você pode listar tabelas em uma conta por meio de uma instância TableServiceClient
chamando a função listTables
. Essa função retorna um PageableAsyncIterator
que você pode consumir usando for-await-of
const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new AzureNamedKeyCredential(account, accountKey);
const serviceClient = new TableServiceClient(
`https://${account}.table.core.windows.net`,
credential
);
async function main() {
const tablesIter = serviceClient.listTables();
let i = 1;
for await (const table of tablesIter) {
console.log(`Table${i}: ${table.name}`);
i++;
// Output:
// Table1: testTable1
// Table1: testTable2
// Table1: testTable3
// Table1: testTable4
// Table1: testTable5
}
}
main();
Criar uma nova tabela
Você pode criar uma tabela por meio de uma instância de TableServiceClient
chamando a função createTable
. Essa função usa o nome da tabela para criar como um parâmetro.
Observe que createTable
não gerará um erro quando a tabela já existir.
const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new AzureNamedKeyCredential(account, accountKey);
const serviceClient = new TableServiceClient(
`https://${account}.table.core.windows.net`,
credential
);
async function main() {
const tableName = `newtable`;
// If the table 'newTable' already exists, createTable doesn't throw
await serviceClient.createTable(tableName);
}
main();
Aqui está um exemplo que demonstra como testar se a tabela já existe ao tentar criá-la:
const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");
const account = "<account>";
const accountKey = "<accountkey>";
const credential = new AzureNamedKeyCredential(account, accountKey);
const serviceClient = new TableServiceClient(
`https://${account}.table.core.windows.net`,
credential
);
async function main() {
const tableName = `newtable${new Date().getTime()}`;
await serviceClient.createTable(tableName, {
onResponse: (response) => {
if (response.status === 409) {
console.log(`Table ${tableName} already exists`);
}
}
});
}
main();
Criar o cliente de tabela
O TableClient
é criado de maneira semelhante à TableServiceClient
com a diferença de que TableClient
usa um nome de tabela como parâmetro
TableClient
com AzureNamedKeyCredential
Você pode criar uma instância de um TableClient
com uma AzureNamedKeyCredential
passando o nome da conta e a chave da conta como argumentos. (O nome da conta e a chave de conta podem ser obtidos no portal do azure.) [DISPONÍVEL APENAS EM NODE.JS RUNTIME]
const { TableClient, AzureNamedKeyCredential } = require("@azure/data-tables");
// Enter your storage account name and shared key
const account = "<account>";
const accountKey = "<accountkey>";
const tableName = "<tableName>";
// Use AzureNamedKeyCredential with storage account and account key
// AzureNamedKeyCredential is only available in Node.js runtime, not in browsers
const credential = new AzureNamedKeyCredential(account, accountKey);
const client = new TableClient(`https://${account}.table.core.windows.net`, tableName, credential);
TableClient
com TokenCredential
(Azure Active Directory)
O Azure Tables fornece integração com o Azure AD (Azure Active Directory) para autenticação baseada em identidade de solicitações para o serviço Tabela ao direcionar um ponto de extremidade de Armazenamento. Com o Azure AD, você pode usar o RBAC (controle de acesso baseado em função) para conceder acesso aos recursos da Tabela do Azure a usuários, grupos ou aplicativos.
Para acessar um recurso de tabela com um TokenCredential
, a identidade autenticada deve ter a função "Colaborador de Dados da Tabela de Armazenamento" ou "Leitor de Dados da Tabela de Armazenamento".
Com o pacote @azure/identity
, você pode autorizar diretamente solicitações em ambientes de desenvolvimento e produção.
Para saber mais sobre a integração do Azure AD no Armazenamento do Azure, consulte o Azure.Identity README
const { TableClient } = require("@azure/data-tables");
const { DefaultAzureCredential } = require("@azure/identity");
// DefaultAzureCredential expects the following three environment variables:
// - AZURE_TENANT_ID: The tenant ID in Azure Active Directory
// - AZURE_CLIENT_ID: The application (client) ID registered in the AAD tenant
// - AZURE_CLIENT_SECRET: The client secret for the registered application
const credential = new DefaultAzureCredential();
const account = "<account name>";
const tableName = "<tableName>";
const clientWithAAD = new TableClient(
`https://${account}.table.core.windows.net`,
tableName,
credential
);
TableClient
com o token SAS
Você pode criar uma instância de um TableClient
com uma SAS (assinaturas de acesso compartilhado). Você pode obter o token SAS no Portal do Azure.
const { TableClient, AzureSASCredential } = require("@azure/data-tables");
const account = "<account name>";
const sas = "<service Shared Access Signature Token>";
const tableName = "<tableName>";
const clientWithSAS = new TableClient(
`https://${account}.table.core.windows.net`,
tableName,
new AzureSASCredential(sas)
);
TableClient
com TokenCredential (AAD)
O Azure Tables fornece integração com o Azure AD (Azure Active Directory) para autenticação baseada em identidade de solicitações para o serviço Tabela ao direcionar um ponto de extremidade de Armazenamento. Com o Azure AD, você pode usar o RBAC (controle de acesso baseado em função) para conceder acesso aos recursos da Tabela do Azure a usuários, grupos ou aplicativos.
Para acessar um recurso de tabela com um TokenCredential
, a identidade autenticada deve ter a função "Colaborador de Dados da Tabela de Armazenamento" ou "Leitor de Dados da Tabela de Armazenamento".
Com o pacote @azure/identity
, você pode autorizar diretamente solicitações em ambientes de desenvolvimento e produção.
Para saber mais sobre a integração do Azure AD no Armazenamento do Azure, consulte o Azure.Identity README
const { TableClient } = require("@azure/data-tables");
const { DefaultAzureCredential } = require("@azure/identity");
// DefaultAzureCredential expects the following three environment variables:
// - AZURE_TENANT_ID: The tenant ID in Azure Active Directory
// - AZURE_CLIENT_ID: The application (client) ID registered in the AAD tenant
// - AZURE_CLIENT_SECRET: The client secret for the registered application
const credential = new DefaultAzureCredential();
const account = "<account name>";
const tableName = "<tableName>";
const clientWithAAD = new TableClient(
`https://${account}.table.core.windows.net`,
tableName,
credential
);
Listar entidades em uma tabela
Você pode listar entidades em uma tabela por meio de uma instância de TableClient
chamando a função listEntities
. Essa função retorna um PageableAsyncIterator
que você pode consumir usando for-await-of
const { TableClient, AzureNamedKeyCredential } = require("@azure/data-tables");
const account = "<account>";
const accountKey = "<accountkey>";
const tableName = "<tableName>";
const credential = new AzureNamedKeyCredential(account, accountKey);
const client = new TableClient(`https://${account}.table.core.windows.net`, tableName, credential);
async function main() {
const entitiesIter = client.listEntities();
let i = 1;
for await (const entity of entitiesIter) {
console.log(`Entity${i}: PartitionKey: ${entity.partitionKey} RowKey: ${entity.rowKey}`);
i++;
// Output:
// Entity1: PartitionKey: P1 RowKey: R1
// Entity2: PartitionKey: P2 RowKey: R2
// Entity3: PartitionKey: P3 RowKey: R3
// Entity4: PartitionKey: P4 RowKey: R4
}
}
main();
Criar uma nova entidade e adicioná-la a uma tabela
Você pode criar uma nova Entidade em uma tabela por meio de uma instância TableClient
chamando a função createEntity
. Essa função usa a entidade para inserir como um parâmetro. A entidade deve conter partitionKey
e rowKey
.
const { TableClient, AzureNamedKeyCredential } = require("@azure/data-tables");
const account = "<account>";
const accountKey = "<accountkey>";
const tableName = "<tableName>";
const credential = new AzureNamedKeyCredential(account, accountKey);
const client = new TableClient(`https://${account}.table.core.windows.net`, tableName, credential);
async function main() {
const testEntity = {
partitionKey: "P1",
rowKey: "R1",
foo: "foo",
bar: 123
};
await client.createEntity(testEntity);
}
main();
Azurite e Emulador de Armazenamento
O SDK do Cliente de Tabelas do Azure também funciona com o Azurite, um emulador de servidor compatível com a API de Armazenamento e Tabelas do Azure. Consulte o (repositório do Azurite) sobre como começar a usá-lo.
Conectando-se ao Azurite com o atalho cadeia de conexão
A maneira mais fácil de se conectar ao Azurite do seu aplicativo é configurar uma cadeia de conexão que faça referência ao atalho UseDevelopmentStorage=true
. O atalho é equivalente à cadeia de conexão completa do emulador, que especifica o nome da conta, a chave da conta e os pontos de extremidade do emulador para cada um dos serviços de Armazenamento do Azure: (ver mais). Usando esse atalho, o SDK do Cliente das Tabelas do Azure configuraria a cadeia de conexão padrão e allowInsecureConnection
nas opções do cliente.
import { TableClient } from "@azure/data-tables";
const connectionString = "UseDevelopmentStorage=true";
const client = TableClient.fromConnectionString(connectionString, "myTable");
Conectando-se ao Azurite sem atalho de cadeia de conexão
Você pode se conectar ao azurite manualmente sem usar o atalho de cadeia de conexão especificando a URL de serviço e AzureNamedKeyCredential
ou uma cadeia de conexão personalizada. No entanto, allowInsecureConnection
precisarão ser definidos manualmente caso o Azurite seja executado em um ponto de extremidade http
.
import { TableClient, AzureNamedKeyCredential } from "@azure/data-tables";
const client = new TableClient(
"<Azurite-http-table-endpoint>",
"myTable",
new AzureNamedKeyCredential("<Azurite-account-name>", "<Azurite-account-key>"),
{ allowInsecureConnection: true }
);
Solucionando problemas
Geral
Quando você interage com o serviço Tabelas usando o SDK javascript/Typescript, os erros retornados pelo serviço correspondem aos mesmos códigos de status HTTP retornados para solicitações da API REST: códigos de erro do Serviço de Tabela de Armazenamento
Log
Habilitar o registro em log pode ajudar a descobrir informações úteis sobre falhas. Para ver um log de solicitações e respostas HTTP, defina a variável de ambiente AZURE_LOG_LEVEL
como info
. Como alternativa, o registro em log pode ser habilitado em runtime chamando setLogLevel
no @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Próximas etapas
Mais exemplos de código em breve Problema nº 10531
Contribuindo
Este projeto recebe contribuições e sugestões. A maioria das contribuições exige que você concorde com um CLA (Contrato de Licença de Colaborador) declarando que você tem o direito de, e realmente fazer, conceder-nos os direitos de usar sua contribuição. Para obter detalhes, visite https://cla.microsoft.com.
Ao enviar uma solicitação de pull, um CLA-bot determinará automaticamente se você precisa fornecer um CLA e decorar a PR adequadamente (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.
Este projeto adotou o
Se você quiser contribuir com essa biblioteca, leia o guia de contribuição para saber mais sobre como criar e testar o código.
impressões
Azure SDK for JavaScript