Azure Cosmos DB Node.js SDK voor API voor NoSQL: opmerkingen bij de release en resources

VAN TOEPASSING OP: NoSQL

Bron Koppeling
Download-SDK @azure/cosmos
API-documentatie Naslagdocumentatie voor JavaScript SDK
INSTALLATIE-instructies voor SDK npm install @azure/cosmos
Bijdragen aan SDK Gids voor bijdragen voor azure-sdk-for-js-opslagplaats
Voorbeelden codevoorbeelden Node.js
Zelfstudie Aan de slag Aan de slag met de JavaScript SDK
Zelfstudie voor web-apps Een Node.js-webtoepassing bouwen met behulp van Azure Cosmos DB
Huidige ondersteunde Node.js platforms LTS-versies van Node.js

Opmerkingen bij de release

Releasegeschiedenis wordt onderhouden in de opslagplaats azure-sdk-for-js, voor een gedetailleerde lijst met releases, zie het changelog-bestand.

Migratiehandleiding voor belangrijke wijzigingen

Als u een oudere versie van de SDK gebruikt, is het raadzaam om te migreren naar de versie 3.0. In deze sectie worden de verbeteringen beschreven die u krijgt met deze versie en de opgeloste fouten in de versie 3.0.

Verbeterde clientconstructoropties

Constructoropties zijn vereenvoudigd:

  • masterKey heeft de naam van de sleutel gewijzigd en is verplaatst naar het hoogste niveau
  • Eigenschappen eerder onder options.auth zijn verplaatst naar het hoogste niveau
// 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"
})

Vereenvoudigde query-iterator-API

In v2 zijn er veel verschillende manieren om resultaten van een query te herhalen of op te halen. We hebben geprobeerd de v3-API te vereenvoudigen en vergelijkbare of dubbele API's te verwijderen:

  • Verwijder iterator.next() en iterator.current(). Gebruik fetchNext() om pagina's met resultaten op te halen.
  • Verwijder iterator.forEach(). Gebruik in plaats daarvan asynchrone iterators.
  • iterator.executeNext() hernoemd naar iterator.fetchNext()
  • iterator.toArray() hernoemd in iterator.fetchAll()
  • Pagina's zijn nu de juiste antwoordobjecten in plaats van gewone JS-objecten
  • 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)
}

Vaste containers worden nu gepartitioneerd

De Azure Cosmos DB-service ondersteunt nu partitiesleutels voor alle containers, inclusief de containers die eerder zijn gemaakt als vaste containers. De v3 SDK wordt bijgewerkt naar de nieuwste API-versie waarmee deze wijziging wordt geïmplementeerd, maar deze wordt niet onderbroken. Als u geen partitiesleutel opgeeft voor bewerkingen, wordt standaard een systeemsleutel gebruikt die werkt met al uw bestaande containers en documenten.

Upsert verwijderd voor opgeslagen procedures

Eerder was upsert toegestaan voor niet-gepartitioneerde verzamelingen, maar met de API-versie-update worden alle verzamelingen gepartitioneerd, zodat deze volledig zijn verwijderd.

Itemleesbewerkingen worden niet gegooid op 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') }

Standaardschrijfbewerkingen voor meerdere regio's

De SDK schrijft nu standaard naar meerdere regio's als uw Azure Cosmos DB-configuratie dit ondersteunt. Dit was eerder opt-in-gedrag.

Juiste foutobjecten

Mislukte aanvragen veroorzaken nu de juiste fout- of subklassen van fout. Voorheen gooiden ze gewone JS-objecten.

Nieuwe functies

Door de gebruiker geannuleerde aanvragen

Door intern op te halen, kunnen we de browser AbortController-API gebruiken om door de gebruiker geannuleerde bewerkingen te ondersteunen. In het geval van bewerkingen waarbij meerdere aanvragen mogelijk worden uitgevoerd (zoals query's voor meerdere partities), worden alle aanvragen voor de bewerking geannuleerd. Moderne browsergebruikers hebben abortController al. Node.js gebruikers een Polyfill-bibliotheek moeten gebruiken

 const controller = new AbortController()
 const {result: item} = await items.query('SELECT * from c', { abortSignal: controller.signal});
 controller.abort()

Doorvoer instellen als onderdeel van de bewerking db/container maken

const { database }  = client.databases.create({ id: 'my-database', throughput: 10000 })
database.containers.create({ id: 'my-container', throughput: 10000 })

@azure/cosmos-sign

Het genereren van headertoken is opgesplitst in een nieuwe bibliotheek. @azure/cosmos-sign Iedereen die de Azure Cosmos DB REST API aanroept, kan dit rechtstreeks gebruiken om headers te ondertekenen met dezelfde code die we binnen aanroepen @azure/cosmos.

UUID voor gegenereerde id's

v2 had aangepaste code voor het genereren van item-id's. We zijn overgeschakeld naar de bekende en onderhouden communitybibliotheek uuid.

Verbindingsreeksen

Het is nu mogelijk om een verbindingsreeks door te geven die is gekopieerd uit Azure Portal:

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()

Verbeterde browserervaring

Hoewel het mogelijk was om de v2 SDK in de browser te gebruiken, was het geen ideale ervaring. U moest polyfill verschillende Node.js ingebouwde bibliotheken en een bundel zoals webpack of Parcel gebruiken. De v3 SDK maakt de out-of-the-box-ervaring veel beter voor browsergebruikers.

  • Interne aanvragen vervangen door ophalen (#245)
  • Gebruik van buffer verwijderen (#330)
  • Ingebouwde knooppuntgebruik verwijderen ten gunste van universele pakketten/API's (#328)
  • Overschakelen naar node-abort-controller (#294)

Bugfixes

  • Aanbieding lezen en terugbrengen van aanbiedingstests herstellen (#224)
  • EnableEndpointDiscovery herstellen (#207)
  • Ontbrekende RU's in gepagineerde resultaten herstellen (#360)
  • Sql-queryparametertype uitvouwen (#346)
  • TTL toevoegen aan ItemDefinition (#341)
  • Metrische gegevens van CP-query's oplossen (#311)
  • ActivityId toevoegen aan FeedResponse (#293)
  • Schakel _ts type van tekenreeks naar getal (#252)(#295)
  • Aggregatie van aanvraagkosten oplossen (#289)
  • Lege tekenreekspartitiesleutels toestaan (#277)
  • Tekenreeks toevoegen aan conflictquerytype (#237)
  • UniqueKeyPolicy toevoegen aan container (#234)

Technische systemen

Niet altijd de meest zichtbare wijzigingen, maar ze helpen ons team betere code te verzenden, sneller.

  • Rollup gebruiken voor productieversies (#104)
  • Bijwerken naar TypeScript 3.5 (#327)
  • Converteren naar TS-projectverwijzingen. Testmap extraheren (#270)
  • NoUnusedLocals en noUnusedParameters (#275) inschakelen
  • YAML voor Azure Pipelines voor CI-builds (#298)

Release- en buitengebruikstellingsdatums

Microsoft biedt ten minste 12 maanden voordat een SDK wordt buiten gebruik gesteld om de overgang naar een nieuwere/ondersteunde versie te vlakken. Nieuwe functies en functionaliteit en optimalisaties worden alleen toegevoegd aan de huidige SDK. Daarom wordt u aangeraden altijd zo vroeg mogelijk een upgrade uit te voeren naar de nieuwste SDK-versie. Lees het Microsoft Ondersteuning-beleid voor SDK's voor meer informatie.

Versie Releasedatum Buitengebruikstellingsdatum
v3 28 juni 2019 ---
v2 24 september 2018 24 september 2021
v1 08 april 2015 30 augustus 2020

Veelgestelde vragen

Hoe word ik op de hoogte gesteld van de buitengebruikstelling van de SDK?

Microsoft zal u 12 maanden vóór het einde van de ondersteuning op de hoogte stellen van de buitengebruikstelling van de SDK om een soepele overgang naar een ondersteunde SDK te vergemakkelijken. We sturen u een melding via verschillende communicatiekanalen: de Azure Portal, Azure-updates en rechtstreekse communicatie met toegewezen servicebeheerders.

Kan ik toepassingen maken met behulp van de Azure Cosmos DB SDK die buiten gebruik gesteld zal worden gedurende de periode van 12 maanden?

Ja, u kunt toepassingen ontwerpen, implementeren en wijzigen met behulp van de Azure Cosmos DB SDK die buiten gebruik gesteld zal worden, gedurende de periode van 12 maanden. Wij raden u aan, indien van toepassing, te migreren naar een nieuwere, ondersteunde versie van de Azure Cosmos DB SDK gedurende de kennisgevingsperiode van 12 maanden.

Wat gebeurt er na de buitengebruikstellingsdatum met de toepassingen die de niet-ondersteunde Azure Cosmos DB SDK gebruiken?

Na de buitengebruikstellingsdatum lost Azure Cosmos DB geen problemen meer op, voegt geen nieuwe functies meer toe en levert geen ondersteuning meer voor de buiten gebruik gestelde SDK-versies. Als u liever geen upgrade uitvoert, worden aanvragen die zijn verzonden vanaf de buiten gebruik gestelde versies van de SDK nog steeds behandeld door de Azure Cosmos DB-service.

Welke SDK-versies hebben de nieuwste functies en updates?

Nieuwe functies en updates worden alleen toegevoegd aan de meest recente secundaire versie van de meest recente ondersteunde primaire SDK-versie. Wij raden aan altijd de nieuwste versie te gebruiken om te profiteren van nieuwe functies, prestatieverbeteringen en oplossingen voor problemen. Als u een oude, niet buiten gebruik gestelde versie van de SDK gebruikt, zullen uw aanvragen voor Azure Cosmos DB nog steeds werken, maar hebt u geen toegang tot nieuwe mogelijkheden.

Wat moet ik doen als ik mijn toepassing niet kan bijwerken vóór een afsluitdatum?

Wij raden u aan zo snel mogelijk een upgrade naar de nieuwste SDK uit te voeren. Nadat een SDK is gelabeld voor buitengebruikstelling, hebt u 12 maanden om de toepassing bij te werken. Als u niet kunt bijwerken voor de buitengebruikstellingsdatum, worden aanvragen die zijn verzonden vanuit de buiten gebruik gestelde versies van de SDK nog steeds behandeld door Azure Cosmos DB, zodat uw actieve toepassingen blijven functioneren. Maar Azure Cosmos DB lost geen problemen meer op, voegt geen nieuwe functies meer toe en levert geen ondersteuning meer voor de buiten gebruik gestelde SDK-versies.

Als u een ondersteuningsplan hebt en technische ondersteuning nodig hebt, neem contact met ons op door een ondersteuningsticket in te vullen.

Hoe kan ik aanvragen dat functies worden toegevoegd aan een SDK of connector?

Nieuwe functies worden niet altijd onmiddellijk toegevoegd aan elke SDK of connector. Als er geen functie wordt ondersteund die u wilt toevoegen, kunt u feedback toevoegen aan ons communityforum.

Zie ook

Zie de servicepagina van Microsoft Azure Cosmos DB voor meer informatie over Azure Cosmos DB .