Biblioteca de cliente de Tabelas do Azure para JavaScript – versão 13.2.2
As Tabelas do Azure são um serviço baseado na cloud que armazena dados NoSQL estruturados, fornecendo um arquivo de chaves/atributos com um design sem esquema. O armazenamento de tabelas proporciona flexibilidade e escalabilidade aos programadores com todas as melhores partes da cloud do Azure.
Utilize a biblioteca de cliente para:
- Criar/Eliminar Tabelas
- Consultar/Criar/Ler/Atualizar/Eliminar Entidades
O Azure Cosmos DB fornece uma API de Tabela para aplicações escritas para o armazenamento de Tabelas do Azure e que precisam de capacidades premium como:
- Distribuição global chave na mão.
- Débito dedicado em todo o mundo.
- Latências de milissegundos na ordem de um dígito no percentil 99.º.
- Elevada disponibilidade garantida.
- Indexação secundária automática.
- A biblioteca de cliente tabelas do Azure pode direcionar de forma totalmente integrada o armazenamento de tabelas do Azure ou os pontos finais de serviço de tabela do Azure Cosmos DB sem alterações de código.
Ligações principais:
Introdução
Pré-requisitos
Ambientes atualmente suportados:
- Versões LTS do Node.js
- Versões mais recentes do Safari, Chrome, Edge e Firefox
Tem de ter uma subscrição do Azure e uma Conta de Armazenamento ou uma base de dados do Azure CosmosDB para utilizar este pacote.
Instalar o pacote @azure/data-tables
A forma preferencial de instalar a biblioteca de cliente das Tabelas do Azure para JavaScript é utilizar o gestor de pacotes npm. Escreva o seguinte numa janela de terminal:
npm install @azure/data-tables
Autenticar um TableServiceClient
As Tabelas do Azure suportam várias formas de autenticação. Para interagir com o serviço Tabelas do Azure, terá de criar uma instância de um cliente TableServiceClient
tabelas ou TableClient
, por exemplo. Veja exemplos para criar o TableServiceClient
para saber mais sobre a autenticação.
Nota: o Azure Active Directory (AAD) só é suportado para contas de Armazenamento do Azure.
- Cliente de serviço com Chave Partilhada
- Cliente de serviço com assinaturas de acesso partilhado
- Cliente de serviço com TokenCredential (AAD)
- Cliente de tabela com Chave Partilhada
- Cliente de tabela com assinaturas de acesso partilhado
- Cliente de tabela com TokenCredential (AAD)
As seguintes funcionalidades, interfaces, classes ou funções só estão disponíveis no Node.js
- Autorização de Chave Partilhada com base no nome da conta e na chave de conta
AzureNamedKeyCredential
- Cadeia de ligação de conta.
Pacote JavaScript
Para utilizar esta biblioteca de cliente no browser, primeiro tem de utilizar um bundler. Para obter detalhes sobre como fazê-lo, consulte a nossa documentação de agrupamento.
CORS
Se precisar de desenvolver para browsers, tem de configurar regras de Partilha de Recursos Entre Origens (CORS) para a sua conta de armazenamento. Aceda a portal do Azure e Explorador de Armazenamento do Azure, localize a sua conta de armazenamento, crie novas regras CORS para os serviços blob/queue/file/table.
Por exemplo, pode criar as seguintes definições CORS para depuração. Mas personalize cuidadosamente as definições de acordo com os 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
Conceitos-chave
TableServiceClient
- Cliente que fornece funções para interagir ao nível do Serviço de Tabelas, como criar, listar e eliminar tabelasTableClient
- Cliente que fornece funções para interagir ao nível de uma entidade, como criar, listar e eliminar entidades numa tabela.Table
- As tabelas armazenam dados como coleções de entidades.Entity
- As entidades são semelhantes às linhas. Uma entidade tem uma chave primária e um conjunto de propriedades. Uma propriedade é um nome, par typed-value, semelhante a uma coluna.
Utilizações comuns do serviço Tabela:
- Armazenamento de TBs de dados estruturados com capacidade para servirem aplicações de dimensionamento da Web
- Armazenar conjuntos de dados que não necessitam de associações complexas, chaves externas ou procedimentos armazenados e que podem ser des normalizados para acesso rápido
- Consulta rápida de dados com um índice em cluster
- Aceder a dados com as expressões de filtro do protocolo OData
Exemplos
Importar o pacote
Para utilizar os clientes, importe o pacote no seu ficheiro:
const AzureTables = require("@azure/data-tables");
Em alternativa, importe seletivamente apenas os tipos de que precisa:
const { TableServiceClient, AzureNamedKeyCredential } = require("@azure/data-tables");
Criar o cliente do serviço Tabela
O TableServiceClient
requer um URL para o serviço de tabela e uma credencial de acesso. Também aceita opcionalmente algumas definições no options
parâmetro.
TableServiceClient
com o AzureNamedKeyCredential
Pode instanciar um com um TableServiceClient
AzureNamedKeyCredential
ao transmitir o nome da conta e a chave de conta como argumentos. (O nome da conta e a chave de conta podem ser obtidos a partir do portal do Azure.) [APENAS DISPONÍVEL NO 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)
As Tabelas do Azure fornecem integração com o Azure Active Directory (Azure AD) para autenticação baseada em identidade de pedidos para o serviço Tabela ao direcionar um ponto final de Armazenamento. Com Azure AD, pode utilizar o controlo de acesso baseado em funções (RBAC) para conceder acesso aos recursos da Tabela do Azure a utilizadores, grupos ou aplicações.
Para aceder a um recurso de tabela com um TokenCredential
, a identidade autenticada deve ter a função "Contribuidor de Dados da Tabela de Armazenamento" ou "Leitor de Dados da Tabela de Armazenamento".
Com o @azure/identity
pacote, pode autorizar pedidos de forma totalmente integrada em ambientes de desenvolvimento e produção.
Para saber mais sobre Azure AD integração no Armazenamento do Azure, veja O README de Azure.Identity
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 de SAS
Além disso, pode instanciar uma TableServiceClient
com assinaturas de acesso partilhado (SAS). Pode obter o token de 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
Pode listar tabelas numa conta através de uma TableServiceClient
instância que chama a listTables
função. Esta função devolve uma PageableAsyncIterator
que pode consumir com 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() {
let 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
Pode criar uma tabela através de uma TableServiceClient
instância que chama a createTable
função. Esta função utiliza o nome da tabela para criar como um parâmetro.
Tenha em atenção que createTable
não emitirá 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();
Eis 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 da tabela
O TableClient
é criado de forma semelhante à com a TableServiceClient
diferença que TableClient
utiliza o nome de uma tabela como parâmetro
TableClient
com AzureNamedKeyCredential
Pode instanciar um com um TableClient
AzureNamedKeyCredential
ao transmitir o nome da conta e a chave de conta como argumentos. (O nome da conta e a chave de conta podem ser obtidos a partir do portal do Azure.) [APENAS DISPONÍVEL NO 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
o (Azure Active Directory)
As Tabelas do Azure fornecem integração com o Azure Active Directory (Azure AD) para autenticação baseada em identidade de pedidos para o serviço Tabela ao direcionar um ponto final de Armazenamento. Com Azure AD, pode utilizar o controlo de acesso baseado em funções (RBAC) para conceder acesso aos recursos da Tabela do Azure a utilizadores, grupos ou aplicações.
Para aceder a um recurso de tabela com um TokenCredential
, a identidade autenticada deve ter a função "Contribuidor de Dados da Tabela de Armazenamento" ou "Leitor de Dados da Tabela de Armazenamento".
Com o @azure/identity
pacote, pode autorizar pedidos de forma totalmente integrada em ambientes de desenvolvimento e produção.
Para saber mais sobre Azure AD integração no Armazenamento do Azure, veja O README de Azure.Identity
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 de SAS
Pode instanciar um TableClient
com assinaturas de acesso partilhado (SAS). Pode obter o token de 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)
As Tabelas do Azure fornecem integração com o Azure Active Directory (Azure AD) para autenticação baseada em identidade de pedidos para o serviço Tabela ao direcionar um ponto final de Armazenamento. Com Azure AD, pode utilizar o controlo de acesso baseado em funções (RBAC) para conceder acesso aos recursos da Tabela do Azure a utilizadores, grupos ou aplicações.
Para aceder a um recurso de tabela com um TokenCredential
, a identidade autenticada deve ter a função "Contribuidor de Dados da Tabela de Armazenamento" ou "Leitor de Dados da Tabela de Armazenamento".
Com o @azure/identity
pacote, pode autorizar pedidos de forma totalmente integrada em ambientes de desenvolvimento e produção.
Para saber mais sobre Azure AD integração no Armazenamento do Azure, veja O README de Azure.Identity
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 numa tabela
Pode listar entidades numa tabela através de uma TableClient
instância que chama a listEntities
função. Esta função devolve uma PageableAsyncIterator
que pode consumir com 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() {
let 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
Pode criar uma nova Entidade numa tabela através de uma TableClient
instância que chama a createEntity
função. Esta função utiliza a entidade para inserir como um parâmetro. A entidade tem de 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();
Emulador de Armazenamento e Azurite
O SDK de Cliente das Tabelas do Azure também funciona com o Azurite, um emulador de servidor compatível com a API de Armazenamento e Tabelas do Azure. Veja o (repositório Azurite) sobre como começar a utilizá-lo.
Ligar ao Azurite com o atalho cadeia de ligação
A forma mais fácil de ligar ao Azurite a partir da sua aplicação é configurar uma cadeia de ligação que faça referência ao atalho UseDevelopmentStorage=true
. O atalho é equivalente à cadeia de ligação completa do emulador, que especifica o nome da conta, a chave de conta e os pontos finais do emulador para cada um dos serviços de Armazenamento do Azure: (veja mais). Com este atalho, o SDK de Cliente das Tabelas do Azure configuraria a cadeia de ligação predefinida e allowInsecureConnection
as opções de cliente.
import { TableClient } from "@azure/data-tables";
const connectionString = "UseDevelopmentStorage=true";
const client = TableClient.fromConnectionString(connectionString, "myTable");
Ligar ao Azurite sem atalho de Cadeia de Ligação
Pode ligar-se manualmente ao azurite sem utilizar o atalho de cadeia de ligação ao especificar o URL do serviço e AzureNamedKeyCredential
ou uma cadeia de ligação personalizada. No entanto, allowInsecureConnection
terá de ser definido manualmente caso o Azurite seja executado num http
ponto final.
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 }
);
Resolução de problemas
Geral
Quando interage com o serviço Tabelas com o SDK Javascript/Typescript, os erros devolvidos pelo serviço correspondem aos mesmos códigos de estado HTTP devolvidos para pedidos de API REST: Códigos de Erro do Serviço de Tabela de Armazenamento
Registo
Ativar o registo pode ajudar a descobrir informações úteis sobre falhas. Para ver um registo de pedidos HTTP e respostas, defina a variável de AZURE_LOG_LEVEL
ambiente como info
. Em alternativa, o registo pode ser ativado no runtime ao chamar setLogLevel
no @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Passos seguintes
Mais exemplos de código em breve Problema#10531
Contribuir
Agradecemos todas as contribuições e sugestões para este projeto. A maioria das contribuições requerem que celebre um Contrato de Licença de Contribuição (CLA) no qual se declare que tem o direito de conceder e que, na verdade, concede-nos os direitos para utilizar a sua contribuição. Para mais detalhes, visite https://cla.microsoft.com.
Quando submete um pedido Pull, um bot do CLA determina automaticamente se tem de fornecer um CLA e decorar o PR de forma adequada (por exemplo, etiqueta, comentário). Só tem de seguir as instruções fornecidas pelo bot. Apenas terá de fazer isto uma vez em todos os repositórios com o nosso CLA.
Este projeto adotou o Microsoft Open Source Code of Conduct (Código de Conduta do Microsoft Open Source). Para obter mais informações, consulte as FAQ do Código de Conduta ou o contacto opencode@microsoft.com com quaisquer perguntas ou comentários adicionais.
Se quiser contribuir para esta biblioteca, leia o guia de contribuição para saber mais sobre como criar e testar o código.
Azure SDK for JavaScript