Rövid útmutató: API létrehozása Table-alkalmazáshoz a Node.js és az Azure Cosmos DB használatával
A KÖVETKEZŐKRE VONATKOZIK: Asztal
Ebben a rövid útmutatóban létrehoz egy Azure Cosmos DB for Table-fiókot, és a GitHubról klónozott Data Explorer és egy Node.js alkalmazás használatával táblákat és entitásokat hoz létre. Az Azure Cosmos DB egy többmodelles adatbázis-szolgáltatás, amely lehetővé teszi dokumentum-, tábla-, kulcs-érték- és gráfadatbázisok gyors létrehozását és lekérdezését globális terjesztési és horizontális méretezési képességekkel.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Hozzon létre egyet ingyen.
- Node.js 0.10.29+ .
- Git.
Mintaalkalmazás
Az oktatóanyag mintaalkalmazása klónozható vagy letölthető az adattárból https://github.com/Azure-Samples/msdocs-azure-data-tables-sdk-js. Az első és a befejezett alkalmazás is szerepel a mintaadattárban.
git clone https://github.com/Azure-Samples/msdocs-azure-data-tables-sdk-js
A mintaalkalmazás időjárási adatokat használ példaként a Table API képességeinek bemutatásához. Az időjárás-megfigyeléseket képviselő objektumok tárolása és lekérése a Table API használatával történik, beleértve az objektumok további tulajdonságokkal való tárolását a Table API séma nélküli képességeinek bemutatásához.
1 – Azure Cosmos DB-fiók létrehozása
Először létre kell hoznia egy Azure Cosmos DB Tables API-fiókot, amely tartalmazza az alkalmazásban használt táblákat. Ez az Azure Portal, az Azure CLI vagy az Azure PowerShell használatával végezhető el.
Jelentkezzen be az Azure Portalra , és kövesse az alábbi lépéseket egy Azure Cosmos DB-fiók létrehozásához.
2 – Tábla létrehozása
Ezután létre kell hoznia egy táblát az Azure Cosmos DB-fiókban az alkalmazás használatához. A hagyományos adatbázistól eltérően csak a tábla nevét kell megadnia, a táblában lévő tulajdonságokat (oszlopokat) nem. Amikor az adatok betöltve vannak a táblába, a tulajdonságok (oszlopok) szükség szerint automatikusan létrejönnek.
Az Azure Portalon hajtsa végre az alábbi lépéseket, hogy létrehozhasson egy táblát az Azure Cosmos DB-fiókban.
3 – Azure Cosmos DB-kapcsolati sztring lekérése
Az Azure Cosmos DB-ben lévő táblázat(ok) eléréséhez az alkalmazásnak szüksége lesz a CosmosDB Storage-fiókhoz kapcsolati sztring táblára. A kapcsolati sztring az Azure Portal, az Azure CLI vagy az Azure PowerShell használatával kérhetők le.
4 – Az Azure Data Tables SDK for JS telepítése
Az Azure Cosmos DB for Table egy nodejs-alkalmazásból való eléréséhez telepítse az Azure Data Tables SDK-csomagot .
npm install @azure/data-tables
5 – A Table-ügyfél konfigurálása env.js fájlban
Másolja az Azure Cosmos DB- vagy Storage-fiókját kapcsolati sztring az Azure Portalról, és hozzon létre egy TableServiceClient objektumot a másolt kapcsolati sztring használatával. Váltás mappára 1-strater-app
vagy 2-completed-app
. Ezután adja hozzá a megfelelő környezeti változók értékét a fájlban configure/env.js
.
const env = {
connectionString:"A connection string to an Azure Storage or Azure Cosmos DB account.",
tableName: "WeatherData",
};
Az Azure SDK ügyfélobjektumok használatával kommunikál az Azure-ral különböző műveletek végrehajtásához. Az TableClient
osztály az Azure Cosmos DB for Table szolgáltatással való kommunikációhoz használt osztály. Az alkalmazások általában egyetlen serviceClient
objektumot hoznak létre táblánként, amelyet az alkalmazás egészében használnak.
const { TableClient } = require("@azure/data-tables");
const env = require("../configure/env");
const serviceClient = TableClient.fromConnectionString(
env.connectionString,
env.tableName
);
6 – Azure Cosmos DB-táblaműveletek implementálása
A mintaalkalmazás összes Azure Cosmos DB-táblaművelete a serviceClient
szolgáltatáskönyvtárban található fájlban található objektumban tableClient.js
van implementálva.
const { TableClient } = require("@azure/data-tables");
const env = require("../configure/env");
const serviceClient = TableClient.fromConnectionString(
env.connectionString,
env.tableName
);
Sorok lekérése táblázatból
Az serviceClient
objektum tartalmaz egy metódust, listEntities
amely lehetővé teszi a sorok kijelölését a táblából. Ebben a példában, mivel nem adnak át paramétereket a metódusnak, az összes sor ki lesz választva a táblából.
const allRowsEntities = serviceClient.listEntities();
Táblázatból visszaadott sorok szűrése
A táblázatból visszaadott sorok szűréséhez OData-stílusszűrési sztringet adhat át a listEntities
metódusnak. Ha például 2021. július 1. éjfél és 2021. július 2. éjfél között szeretné lekérni Chicago összes időjárási adatát (beleértve a 2021. július 2-án éjfélt), akkor a következő szűrősztringet kell megadnia.
PartitionKey eq 'Chicago' and RowKey ge '2021-07-01 12:00' and RowKey le '2021-07-02 12:00'
Az OData webhely összes OData szűrőműveletét a Rendszerlekérdezés szűrése lehetőség szakaszban tekintheti meg.
Amikor a request.args paramétert átadja az listEntities
serviceClient
osztály metódusának, minden nem null tulajdonságértékhez létrehoz egy szűrősztringet. Ezután létrehoz egy kombinált szűrősztringet úgy, hogy az összes értéket egy "és" záradékkal összekapcsolja. Ez az egyesített szűrősztring az objektum metódusának listEntities
serviceClient
lesz átadva, és csak a szűrősztringnek megfelelő sorok lesznek visszaadva. A kódban egy hasonló módszerrel megfelelő szűrősztringeket hozhat létre az alkalmazás által megkövetelt módon.
const filterEntities = async function (option) {
/*
You can query data according to existing fields
option provides some conditions to query,eg partitionKey, rowKeyDateTimeStart, rowKeyDateTimeEnd
minTemperature, maxTemperature, minPrecipitation, maxPrecipitation
*/
const filterEntitiesArray = [];
const filters = [];
if (option.partitionKey) {
filters.push(`PartitionKey eq '${option.partitionKey}'`);
}
if (option.rowKeyDateTimeStart) {
filters.push(`RowKey ge '${option.rowKeyDateTimeStart}'`);
}
if (option.rowKeyDateTimeEnd) {
filters.push(`RowKey le '${option.rowKeyDateTimeEnd}'`);
}
if (option.minTemperature !== null) {
filters.push(`Temperature ge ${option.minTemperature}`);
}
if (option.maxTemperature !== null) {
filters.push(`Temperature le ${option.maxTemperature}`);
}
if (option.minPrecipitation !== null) {
filters.push(`Precipitation ge ${option.minPrecipitation}`);
}
if (option.maxPrecipitation !== null) {
filters.push(`Precipitation le ${option.maxPrecipitation}`);
}
const res = serviceClient.listEntities({
queryOptions: {
filter: filters.join(" and "),
},
});
for await (const entity of res) {
filterEntitiesArray.push(entity);
}
return filterEntitiesArray;
};
Adatok beszúrása TableEntity objektummal
Az adatok táblázatba való felvételének legegyszerűbb módja egy TableEntity
objektum használata. Ebben a példában az adatok leképezve lesznek egy bemeneti modell objektumából egy TableEntity
objektumba. A bemeneti objektum azon tulajdonságai, amelyek az időjárási állomás nevét és a megfigyelés dátumát/idejét jelölik, azokra a PartitionKey
RowKey
tulajdonságokra vannak leképezve, amelyek együttesen a tábla sorának egyedi kulcsát alkotják. Ezután a bemeneti modell objektum további tulajdonságai a TableEntity objektum szótártulajdonságaihoz lesznek leképezve. Végül az createEntity
objektum metódusával serviceClient
adatokat szúrhat be a táblába.
Módosítsa a függvényt insertEntity
a példaalkalmazásban úgy, hogy az tartalmazza a következő kódot.
const insertEntity = async function (entity) {
await serviceClient.createEntity(entity);
};
Adatok hozzáadása TableEntity-objektum használatával
Ha egy olyan táblába próbál beszúrni egy sort, amelyben már létezik partíciókulcs/sorkulcs kombináció, hibaüzenet jelenik meg. Ezért gyakran előnyösebb a upsertEntity
metódus helyett createEntity
sorok táblázathoz való hozzáadásakor használni. Ha a megadott partíciókulcs/sorkulcs kombináció már létezik a táblában, a upsertEntity
metódus frissíti a meglévő sort. Ellenkező esetben a sor hozzá lesz adva a táblához.
const upsertEntity = async function (entity) {
await serviceClient.upsertEntity(entity, "Merge");
};
Adatok beszúrása vagy frissítése változó tulajdonságokkal
Az Azure Cosmos DB for Table használatának egyik előnye, hogy ha egy táblába betöltött objektum új tulajdonságokat tartalmaz, akkor a rendszer automatikusan hozzáadja ezeket a tulajdonságokat a táblához és az Azure Cosmos DB-ben tárolt értékekhez. A hagyományos adatbázisokhoz hasonló oszlopok hozzáadásához nem szükséges DDL-utasításokat futtatni, például AZ ALTER TABLE-et.
Ez a modell rugalmasságot biztosít az alkalmazásnak az olyan adatforrások kezelésekor, amelyek hozzáadhatják vagy módosíthatják, hogy milyen adatokat kell rögzíteni az idő múlásával, vagy amikor a különböző bemenetek eltérő adatokat biztosítanak az alkalmazás számára. A mintaalkalmazásban olyan időjárási állomást szimulálhatunk, amely nem csak az alap időjárási adatokat, hanem néhány további értéket is küld. Ha az új tulajdonságokkal rendelkező objektumot először tárolja a tábla, a megfelelő tulajdonságok (oszlopok) automatikusan hozzáadódnak a táblához.
Ha egy ilyen objektumot a Table API használatával szeretne beszúrni vagy továbbadni, képezheti le a bővíthető objektum tulajdonságait egy TableEntity
objektumba, és szükség szerint használja az createEntity
serviceClient
objektumon lévő metódusokat vagy upsertEntity
metódusokat.
A mintaalkalmazásban a upsertEntity
függvény a változó tulajdonságokkal rendelkező adatok beszúrásának vagy frissítésének függvényét is implementálhatja
const insertEntity = async function (entity) {
await serviceClient.createEntity(entity);
};
const upsertEntity = async function (entity) {
await serviceClient.upsertEntity(entity, "Merge");
};
Entitás frissítése
Az entitások frissíthetők az objektum metódusának updateEntity
serviceClient
meghívásával.
A mintaalkalmazásban ez az objektum az objektum metódusának serviceClient
lesz átadvaupsertEntity
. Frissíti az entitásobjektumot, és a upsertEntity
módszerrel menti a frissítéseket az adatbázisba.
const updateEntity = async function (entity) {
await serviceClient.updateEntity(entity, "Replace");
};
7 – A kód futtatása
Futtassa a mintaalkalmazást az Azure Cosmos DB for Table használatához. Az alkalmazás első futtatásakor nem lesznek adatok, mert a tábla üres. Az alkalmazás tetején található gombok bármelyikével adatokat adhat hozzá a táblához.
A Beszúrás táblázatentitással gombra kattintva megnyílik egy párbeszédpanel, amellyel új sort szúrhat be vagy állíthat be egy TableEntity
objektummal.
Ha a Beszúrás bővíthető adatokkal gombot választja, megjelenik egy párbeszédpanel, amellyel egyéni tulajdonságokkal rendelkező objektumot szúrhat be, amely bemutatja, hogy az Azure Cosmos DB for Table hogyan adja hozzá automatikusan a tulajdonságokat (oszlopokat) a táblához, ha szükséges. Az Egyéni mező hozzáadása gombbal hozzáadhat egy vagy több új tulajdonságot, és bemutathatja ezt a képességet.
A Mintaadatok beszúrása gombbal betölthet néhány mintaadatot az Azure Cosmos DB-táblába.
Válassza ki a felső menü Találatok szűrése elemét, és lépjen az Eredmények szűrése lapra. Ezen a lapon töltse ki a szűrési feltételeket, hogy bemutassuk, hogyan hozható létre és adható át egy szűrőzáradék az Azure Cosmos DB for Tablenek.
Az erőforrások eltávolítása
Ha végzett a mintaalkalmazással, el kell távolítania a cikkhez kapcsolódó összes Azure-erőforrást az Azure-fiókjából. Ezt az erőforráscsoport törlésével teheti meg.
Az erőforráscsoportokat az alábbi lépésekkel törölheti az Azure Portalon .
Következő lépések
Ebben a rövid útmutatóban bemutattuk, hogyan lehet Azure Cosmos DB-fiókot létrehozni, hogyan lehet az Adatkezelő segítségével táblát készíteni, és hogyan lehet futtatni az alkalmazást. Most már lekérdezheti az adatokat a Table API használatával.