Rövid útmutató: Azure Cosmos DB for NoSQL-kódtár Node.js
A KÖVETKEZŐRE VONATKOZIK: NoSQL
Ismerkedés az Azure Cosmos DB for NoSQL ügyfélkódtárával, Node.js a tárolókban lévő adatok lekérdezéséhez és az egyes elemek gyakori műveleteihez. Az alábbi lépéseket követve üzembe helyezhet egy minimális megoldást a környezetében az Azure Developer CLI használatával.
API-referenciadokumentáció Kódtár forráskódcsomagja | (npm) | Azure Developer CLI |
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
- GitHub-fiók
- Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
- Azure Developer CLI
- Docker Desktop
Beállítás
Helyezze üzembe a projekt fejlesztési tárolóját a környezetében. Ezután az Azure Developer CLI (azd
) használatával hozzon létre egy Azure Cosmos DB for NoSQL-fiókot, és helyezzen üzembe egy tárolóalapú mintaalkalmazást. A mintaalkalmazás az ügyfélkódtárat használja a mintaadatok kezelésére, létrehozására, olvasására és lekérdezésére.
Fontos
A GitHub-fiókok magukban foglalják a tárterületre és az alapórákra való jogosultságot díjmentesen. További információkért tekintse meg a GitHub-fiókokhoz tartozó tárterületet és alapórákat.
Nyisson meg egy terminált a projekt gyökérkönyvtárában.
Hitelesítés az Azure Developer CLI-vel
azd auth login
a . Kövesse az eszköz által megadott lépéseket a parancssori felületre való hitelesítéshez az ön által előnyben részesített Azure-hitelesítő adatokkal.azd auth login
A projekt inicializálására használható
azd init
.azd init --template cosmos-db-nosql-dotnet-quickstart
Feljegyzés
Ez a rövid útmutató az azure-samples/cosmos-db-nosql-dotnet-quickstart sablon GitHub-adattárat használja. Az Azure Developer CLI automatikusan klónozza ezt a projektet a gépére, ha még nincs ott.
Az inicializálás során konfiguráljon egy egyedi környezetnevet.
Tipp.
A rendszer a környezet nevét is használja a célerőforráscsoport neveként. Ebben a rövid útmutatóban fontolja meg a használatát
msdocs-cosmos-db
.Az Azure Cosmos DB-fiók üzembe helyezése a következő használatával
azd up
: . A Bicep-sablonok egy minta webalkalmazást is üzembe helyeznek.azd up
A kiépítési folyamat során válassza ki az előfizetést és a kívánt helyet. Várja meg, amíg a kiépítési folyamat befejeződik. A folyamat körülbelül öt percet vehet igénybe.
Az Azure-erőforrások kiépítése után a kimenet tartalmazza a futó webalkalmazás URL-címét.
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io> SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
A konzol URL-címével keresse meg a webalkalmazást a böngészőben. Figyelje meg a futó alkalmazás kimenetét.
Telepítse az ügyfélkódtárat
Az ügyfélkódtár csomagként @azure/cosmos
a Node Csomagkezelő keresztül érhető el.
Nyisson meg egy terminált, és keresse meg a
/src
mappát.cd ./src
Ha még nincs telepítve, telepítse a csomagot a
@azure/cosmos
következővelnpm install
: .npm install --save @azure/cosmos
Emellett telepítse a
@azure/identity
csomagot, ha még nincs telepítve.npm install --save @azure/identity
Nyissa meg és tekintse át az src/package.json fájlt annak ellenőrzéséhez, hogy a bejegyzések és
azure-identity
aazure-cosmos
bejegyzések is léteznek-e.
Objektummodell
Név | Leírás |
---|---|
CosmosClient |
Ez az osztály az elsődleges ügyfélosztály, és a fiókszintű metaadatok vagy adatbázisok kezelésére szolgál. |
Database |
Ez az osztály egy adatbázist jelöl a fiókon belül. |
Container |
Ez az osztály elsősorban olvasási, frissítési és törlési műveletek végrehajtására szolgál a tárolón vagy a tárolóban tárolt elemeken. |
PartitionKey |
Ez az osztály egy logikai partíciókulcsot jelöl. Ez az osztály számos gyakori művelethez és lekérdezéshez szükséges. |
SqlQuerySpec |
Ez az interfész egy SQL-lekérdezést és minden lekérdezési paramétert jelöl. |
Kódpéldák
- Az ügyfél hitelesítése
- Adatbázis lekérése
- Tároló lekérése
- Elem létrehozása
- Elem lekérése
- Lekérdezési elemek
A sablon mintakódja egy névvel ellátott cosmicworks
adatbázist és egy nevű tárolót products
használ. A products
tároló olyan részleteket tartalmaz, mint a név, a kategória, a mennyiség, az egyedi azonosító és az egyes termékekhez tartozó értékesítési jelző. A tároló a tulajdonságot /category
logikai partíciókulcsként használja.
Az ügyfél hitelesítése
A legtöbb Azure-szolgáltatáshoz irányuló alkalmazáskéréseket engedélyezni kell. Használja a DefaultAzureCredential
típust előnyben részesített módszerként az alkalmazások és az Azure Cosmos DB for NoSQL közötti jelszó nélküli kapcsolat implementálásához. DefaultAzureCredential
több hitelesítési módszert támogat, és meghatározza, hogy melyik metódust kell használni futásidőben.
Fontos
Az Azure-szolgáltatásokra irányuló kéréseket közvetlenül jelszóval, kapcsolati sztring vagy más hitelesítő adatokkal is engedélyezheti. Ezt a megközelítést azonban körültekintően kell alkalmazni. A fejlesztőknek szorgalmasnak kell lenniük ahhoz, hogy ezeket a titkos kulcsokat soha ne fedje fel nem biztonságos helyen. Bárki, aki hozzáfér a jelszóhoz vagy titkos kulcshoz, hitelesítheti magát az adatbázis-szolgáltatásban. DefaultAzureCredential
továbbfejlesztett felügyeleti és biztonsági előnyöket kínál a fiókkulcshoz képest, hogy a kulcsok tárolása nélkül engedélyezze a jelszó nélküli hitelesítést.
Ez a minta létrehoz egy új típusú példányt, CosmosClient
és egy DefaultAzureCredential
példány használatával hitelesít.
const credential = new DefaultAzureCredential();
const client = new CosmosClient({
'<azure-cosmos-db-nosql-account-endpoint>',
aadCredentials: credential
});
Adatbázis lekérése
A meglévő, elnevezett cosmicworks
adatbázis lekérésére használhatóclient.database
.
const database = client.database('cosmicworks');
Tároló lekérése
A meglévő products
tároló lekérése a következővel database.container
: .
const container = database.container('products');
Elem létrehozása
Hozzon létre egy új objektumot a JSON-ba szerializálni kívánt összes taggal. Ebben a példában a típus egyedi azonosítóval rendelkezik, és a kategória, a név, a mennyiség, az ár és az értékesítés mezői. Hozzon létre egy elemet a tárolóban a következő használatával container.items.upsert
: . Ez a metódus "upserts" az elemet hatékonyan cserélje le, ha már létezik.
const item = {
'id': '70b63682-b93a-4c77-aad2-65501347265f',
'category': 'gear-surf-surfboards',
'name': 'Yamba Surfboard',
'quantity': 12,
'price': 850.00,
'clearance': false
};
let response = await container.items.upsert(item);
Elem olvasása
Pontolvasási műveletet hajt végre az egyedi azonosító (id
) és a partíciókulcs mezőinek használatával. Segítségével container.item
mutatót kaphat egy elemhez, és item.read
hatékonyan lekérheti az adott elemet.
const id = '70b63682-b93a-4c77-aad2-65501347265f';
const partitionKey = 'gear-surf-surfboards';
let response = await container.item(id, partitionKey).read();
let read_item = response.resource;
Lekérdezési elemek
Lekérdezés végrehajtása egy tároló több eleme felett a következő használatával container.items.query
: . Egy adott kategórián belüli összes elem megkeresése ezzel a paraméteres lekérdezéssel:
SELECT * FROM products p WHERE p.category = @category
A lekérdezés összes eredményének lekérése a következő használatával query.fetchAll
: . Futtasd végig a lekérdezés eredményeit.
const querySpec = {
query: 'SELECT * FROM products p WHERE p.category = @category',
parameters: [
{
name: '@category',
value: 'gear-surf-surfboards'
}
]
};
let response = await container.items.query(querySpec).fetchAll();
for (let item of response.resources) {
// Do something
}