SDK do Node.js do Azure Cosmos DB para a API do NoSQL: notas sobre a versão e recursos
APLICA-SE A: NoSQL
- SDK v3 do .NET
- SDK do .NET v2
- SDK v2 do .NET Core
- SDK do Feed de Alterações do .NET v2
- Node.js
- SDK do Java v4
- SDK do Java Síncrono v2
- SDK do Java Assíncrono v2
- Spring Data v2
- Spring Data v3
- Spring Data v5
- Python
- Go
- REST
- Provedor de recursos REST
- SQL
- Executor em massa – .NET v2
- Executor em massa – Java
Recurso | Link |
---|---|
Baixar o SDK | @azure/cosmos |
Documentação da API | Documentação de referência de SDK do JavaScript |
Instruções de instalação do SDK | npm install @azure/cosmos |
Contribuir para o SDK | Guia de contribuição para o repo do azure-sdk-for-js |
Exemplos | Exemplos de código do Node.js |
Tutorial de introdução | Introdução ao SDK do JavaScript |
Tutorial do aplicativo Web | Criar um aplicativo web Node.js usando o Azure Cosmos DB |
Plataformas de Node.js com suporte atual | Versões LTS do Node.js |
Notas de versão
O histórico de versões é mantido no repositório azure-sdk-for-js. Confira a lista detalhada de versões no arquivo changelog.
Guia de migração para alterações de falhas
Se você estiver em uma versão mais antiga do SDK, é recomendável migrar para a versão 3.0. Esta seção detalha as melhorias que você obteria com essa versão e as correções de bugs feitas na versão 3.0.
Opções aprimoradas de construtor de cliente
As opções do construtor foram simplificadas:
- masterKey foi renomeado como chave e movido para o nível superior
- As propriedades anteriormente em options.auth foram movidas para o nível superior
// v2
const client = new CosmosClient({
endpoint: "https://your-database.cosmos.azure.com",
auth: {
masterKey: "your-primary-key"
}
})
// v3
const client = new CosmosClient({
endpoint: "https://your-database.cosmos.azure.com",
key: "your-primary-key"
})
API simplificada do QueryIterator
Na v2, havia várias maneiras de iterar ou recuperar resultados de uma consulta. Tentamos simplificar a API da v3 e remover APIs semelhantes ou duplicadas:
- Remover iterator.next() e iterator.current(). Usar fetchNext() para obter páginas de resultados.
- Remover iterator.forEach(). Em vez disso, usar iteradores assíncronos.
- iterator.executeNext() renomeado para iterator.fetchNext().
- iterator.toArray() renomeado para iterator.fetchAll().
- As páginas agora são objetos de resposta adequados, em vez de objetos JS simples.
- const container = client.database(dbId).container(containerId)
// v2
container.items.query('SELECT * from c').toArray()
container.items.query('SELECT * from c').executeNext()
container.items.query('SELECT * from c').forEach(({ body: item }) => { console.log(item.id) })
// v3
container.items.query('SELECT * from c').fetchAll()
container.items.query('SELECT * from c').fetchNext()
for await(const { result: item } in client.databases.readAll().getAsyncIterator()) {
console.log(item.id)
}
Os contêineres fixos agora estão particionados.
O serviço do Azure Cosmos DB agora é compatível com chaves de partição em todos os contêineres, incluindo aqueles que foram criados anteriormente como contêineres fixos. O SDK v3 é atualizado para a versão mais recente da API que implementa essa alteração, mas está sem interrupção. Se você não fornecer uma chave de partição para operações, usaremos como padrão uma chave do sistema que funcione com todos os seus contêineres e documentos existentes.
Upsert removido dos procedimentos armazenados
Anteriormente, upsert era permitido em coleções não particionadas. Mas, com a atualização de versão da API, todas as coleções são particionadas e nós o removemos por completo.
A leitura de itens não lançará um erro 404
const container = client.database(dbId).container(containerId)
// v2
try {
container.items.read(id, undefined)
} catch (e) {
if (e.code === 404) { console.log('item not found') }
}
// v3
const { result: item } = container.items.read(id, undefined)
if (item === undefined) { console.log('item not found') }
Gravação padrão de várias regiões
Por padrão, o SDK agora gravará em várias regiões em que a configuração do Azure Cosmos DB for compatível. Esse era um comportamento opcional anteriormente.
Objetos de erro apropriados
As solicitações com falha agora geram erro ou subclasses de erro apropriados. Anteriormente, eles lançavam objetos JS simples.
Novos recursos
Solicitações canceláveis pelo usuário
A mudança para efetuar fetch internamente nos permite usar a API AbortController do navegador para compatibilidade com operações canceláveis pelo usuário. No caso de operações em que várias solicitações estão potencialmente em andamento (como consultas entre partições), todas as solicitações da operação serão canceladas. Os usuários de navegadores modernos já terão AbortController. Os usuários de node.js precisarão usar uma biblioteca polyfill.
const controller = new AbortController()
const {result: item} = await items.query('SELECT * from c', { abortSignal: controller.signal});
controller.abort()
Definir a taxa de transferência como parte da operação de criação de BD/contêiner
const { database } = client.databases.create({ id: 'my-database', throughput: 10000 })
database.containers.create({ id: 'my-container', throughput: 10000 })
@azure/cosmos-sign
A geração de tokens de cabeçalho foi dividida em uma nova biblioteca, @azure/cosmos-sign. Qualquer pessoa que chamar a API REST do Azure Cosmos DB diretamente poderá usar isso para assinar cabeçalhos utilizando o mesmo código que chamamos dentro de @azure/cosmos.
UUID para IDs geradas
A v2 tinha código personalizado para gerar IDs de item. Mudamos para a biblioteca de comunidade uuid, bem conhecida e mantida.
Cadeias de conexão
Agora é possível passar uma cadeia de conexão copiada do portal do Azure:
const client = new CosmosClient("AccountEndpoint=https://test-account.documents.azure.com:443/;AccountKey=c213asdasdefgdfgrtweaYPpgoeCsHbpRTHhxuMsTaw==;")
Add DISTINCT and LIMIT/OFFSET queries (#306)
const { results } = await items.query('SELECT DISTINCT VALUE r.name FROM ROOT').fetchAll()
const { results } = await items.query('SELECT * FROM root r OFFSET 1 LIMIT 2').fetchAll()
Experiência de navegador aprimorada
Embora fosse possível usar o SDK v2 no navegador, não era uma experiência ideal. Era necessário o Polyfill em várias bibliotecas internas do Node.js e usar um empacotador, como webpack ou Parcel. O SDK da v3 torna a experiência imediata e muito melhor para os usuários do navegador.
- Substituir os elementos internos da solicitação por fetch (nº 245)
- Remover uso do buffer (nº 330)
- Remover o uso interno do nó em favor de pacotes/APIs universais (nº 328)
- Mudar para node-abort-controller (nº 294)
Correções de bug
- Corrigir leitura de oferta e trazer de volta testes de oferta (nº 224)
- Corrigir EnableEndpointDiscovery (nº 207)
- Corrigir RUs ausente nos resultados paginados (nº 360)
- Expandir tipo de parâmetro de consulta SQL (nº 346)
- Adicionar ttl a ItemDefinition (nº 341)
- Corrigir métricas de consulta de CP (nº 311)
- Adicionar activityId a FeedResponse (nº 293)
- Mudar _ts type de cadeia de caracteres para número (nº 252)(nº 295)
- Corrigir agregação de solicitação de encargo (nº 289)
- Permitir chaves de partição com cadeia de caracteres em branco (nº 277)
- Adicionar cadeia de caracteres ao tipo de consulta de conflito (nº 237)
- Adicionar uniqueKeyPolicy ao contêiner (nº 234)
Sistemas de engenharia
Nem sempre são as alterações mais visíveis, mas ajudam nossa equipe a fornecer um código melhor, mais rápido.
- Usar rollup nas compilações de produção (nº 104)
- Atualizar para TypeScript 3.5 (nº 327)
- Converter em referências de projeto TS. Extrair pasta de teste (nº 270)
- Habilitar noUnusedLocals e noUnusedParameters (nº 275)
- YAML do Azure Pipelines para compilações de CI (nº 298)
Datas de lançamento e desativação
A Microsoft notifica pelo menos 12 meses antes de desativar um SDK, a fim de realizar uma transição tranquila para uma versão mais recente/com suporte. Os novos recursos, funcionalidades e otimizações são adicionados apenas ao SDK atual. Portanto, é recomendável atualizar sempre que possível para a versão do SDK mais recente. Leia a Política de Suporte da Microsoft para SDKs para obter mais detalhes.
Versão | Data de lançamento | Data de desativação |
---|---|---|
v3 | 28 de junho de 2019 | --- |
v2 | 24 de setembro de 2018 | 24 de setembro de 2021 |
v1 | 8 de abril de 2015 | 30 de agosto de 2020 |
Perguntas frequentes
Como serei notificado sobre a desativação do SDK?
A Microsoft enviará uma notificação com 12 meses de antecedência informando sobre o fim do suporte para o SDK a ser desativado, para facilitar uma transição suave para um SDK com suporte. Você será notificado por meio de vários canais de comunicação: o portal do Azure, as atualizações do Azure e a comunicação direta com os administradores de serviços atribuídos.
Durante o período de 12 meses, posso criar aplicativos usando um SDK do Azure Cosmos DB que será desativado?
Sim, durante o período de notificação de 12 meses, você poderá criar, implantar e modificar aplicativos usando o SDK do Azure Cosmos DB que será desativado. Recomendamos que você migre para uma versão do SDK do Azure Cosmos DB mais recente com suporte durante o período de notificação de 12 meses, conforme o necessário.
Após a data de desativação, o que acontece com os aplicativos que usam o SDK do Azure Cosmos DB sem suporte?
Após a data de desativação, o Azure Cosmos DB não fará mais correções de bug, não adicionará novos recursos nem dará suporte às versões desativadas do SDK. Se você preferir não fazer a atualização, as solicitações enviadas das versões desativadas do SDK continuarão sendo atendidas pelo serviço Azure Cosmos DB.
Quais versões do SDK terão os recursos e as atualizações mais recentes?
Os novos recursos e atualizações serão adicionados somente à última versão secundária da última versão principal do SDK com suporte. Recomendamos que você sempre use a última versão para aproveitar os novos recursos, os aprimoramentos de desempenho e as correções de bug. Se você estiver usando uma versão antiga e não desativada do SDK, suas solicitações para o Azure Cosmos DB continuarão a funcionar, mas você não terá acesso a nenhuma funcionalidade nova.
O que fazer se eu não conseguir atualizar meu aplicativo antes da data limite?
Recomendamos atualizar o mais rápido possível para o SDK mais recente. Depois que um SDK for marcado para desativação, você terá 12 meses para atualizar seu aplicativo. Se você não conseguir fazer a atualização até data de desativação, as solicitações enviadas das versões desativadas do SDK continuarão a ser atendidas pelo Azure Cosmos DB, para que os aplicativos em execução continuem a funcionar. No entanto, o Azure Cosmos DB não fará mais correções de bug, não adicionará novos recursos nem dará suporte às versões desativadas do SDK.
Se você tem um plano de suporte e precisa de suporte técnico, entre em contato conosco abrindo um tíquete de suporte.
Como solicitar que recursos sejam adicionados a um SDK ou ao conector?
Os novos recursos nem sempre são adicionados a cada SDK ou conector imediatamente. Se não houver suporte para um recurso que você gostaria de adicionar, adicione comentários ao nosso fórum da comunidade.
Confira também
Para saber mais sobre o Azure Cosmos DB, veja a página do serviço Microsoft Azure Cosmos DB.