Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben a rövid útmutatóban üzembe helyez egy alapszintű Azure Cosmos DB for Table-alkalmazást az Azure SDK for Go használatával. Az Azure Cosmos DB for Table egy séma nélküli adattár, amely lehetővé teszi, hogy az alkalmazások strukturált táblaadatokat tároljanak a felhőben. Megtudhatja, hogyan hozhat létre táblákat, sorokat, és hogyan hajthat végre alapvető feladatokat az Azure Cosmos DB-erőforrásban az Azure SDK for Go használatával.
Kódtár forráskódja | Csomag (Go) | Azure Developer CLI
Prerequisites
- Azure Developer CLI
- Docker Desktop
-
Go1.21 vagy újabb
Ha nem rendelkezik Azure-fiókkal, a kezdés előtt hozzon létre egy ingyenes fiókot .
A projekt inicializálása
Az Azure Developer CLI (azd) használatával hozzon létre egy Azure Cosmos DB for Table-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.
Nyisson meg egy terminált egy üres mappában.
Ha még nincs hitelesítve, jelentkezzen be az Azure Developer CLI-be a
azd auth loginhasználatával. 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 loginA projekt inicializálására használható
azd init.azd init --template cosmos-db-table-go-quickstartAz inicializálás során konfiguráljon egy egyedi környezetnevet.
Azure Cosmos DB-fiók üzembe helyezése a
azd uphasználatával. A Bicep-sablonok egy minta webalkalmazást is üzembe helyeznek.azd upA kiépítési folyamat során válassza ki az előfizetést, a kívánt helyet és a célerőforrás-csoportot. 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 a klienskönyvtárat
A klienstárkönyvtár a Go csomag részeként érhető el aztables.
Nyisson meg egy terminált, és keresse meg a
/srcmappát.cd ./srcHa még nincs telepítve, telepítse a
aztablescsomagot ago installhasználatával.go install github.com/Azure/azure-sdk-for-go/sdk/data/aztablesNyissa meg és tekintse át az src/go.mod fájlt annak ellenőrzéséhez, hogy a
github.com/Azure/azure-sdk-for-go/sdk/data/aztablesbejegyzés létezik-e.
Könyvtárak importálása
Importáláskor vegye fel a github.com/Azure/azure-sdk-for-go/sdk/azidentity és github.com/Azure/azure-sdk-for-go/sdk/data/aztables csomagokat az alkalmazás kódjába.
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/data/aztables"
)
Objektummodell
| Name | Description |
|---|---|
ServiceClient |
Ez a típus az elsődleges ügyféltípus, és a fiókszintű metaadatok vagy adatbázisok kezelésére szolgál. |
Client |
Ez a típus a fiókon belüli tábla ügyfélét jelöli. |
Példakódok
A sablonban lévő mintakód egy nevű táblát cosmicworks-productshasznál. A cosmicworks-products táblázat olyan részleteket tartalmaz, mint a név, a kategória, a mennyiség, az ár, az egyedi azonosító és az egyes termékek értékesítési jelzője. A tároló egy egyedi azonosítót használ sorkulcsként és kategóriaként partíciókulcsként.
Az ügyfél hitelesítése
Az alábbi példa létrehoz egy új ServiceClient típusú példányt.
credential, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
return err
}
client, err := aztables.NewServiceClient("<azure-cosmos-db-table-account-endpoint>", credential)
if err != nil {
log.Fatal(err)
}
Táblázat lekérése
Ez a minta a Client típusú példányt a NewClient típus ServiceClient függvényének használatával hozza létre.
table, err := client.NewClient("<azure-cosmos-db-table-name>")
if err != nil {
log.Fatal(err)
}
Entitás létrehozása
Az új entitások táblabeli létrehozásának legegyszerűbb módja egy típuspéldány aztables.EDMEntitylétrehozása. Állítsa be a RowKey és PartitionKey tulajdonságokat a aztables.Entity típus használatával, majd állítson be bármilyen további tulajdonságot egy sztringtérkép használatával.
entity := aztables.EDMEntity{
Entity: aztables.Entity{
RowKey: "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
PartitionKey: "gear-surf-surfboards",
},
Properties: map[string]any{
"Name": "Yamba Surfboard",
"Quantity": 12,
"Price": 850.00,
"Clearance": false,
},
}
Konvertálja az entitást egy bájttömbbé json.Marshal használatával, majd hozzon létre egy entitást a táblában a UpsertEntity használatával.
bytes, err := json.Marshal(entity)
if err != nil {
panic(err)
}
_, err = table.UpsertEntity(context.TODO(), bytes, nil)
if err != nil {
panic(err)
}
Entitás lekérése
Egy adott entitást lekérhet egy táblából a következő használatával GetEntity: . Ezután a json.Unmarshal segítségével elemezheti az aztables.EDMEntity típus használatával.
rowKey := "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
partitionKey := "gear-surf-surfboards"
response, err := table.GetEntity(context.TODO(), partitionKey, rowKey, nil)
if err != nil {
panic(err)
}
var entity aztables.EDMEntity
err = json.Unmarshal(response.Value, &entity)
if err != nil {
panic(err)
}
Entitások lekérdezése
Miután beszúrt egy entitást, egy lekérdezést is futtathat az adott szűrőnek megfelelő összes entitás lekéréséhez egy sztringszűrővel NewListEntitiesPager együtt.
category := "gear-surf-surfboards"
// Ensure the value is OData-compliant by escaping single quotes
safeCategory := strings.ReplaceAll(category, "'", "''")
filter := fmt.Sprintf("PartitionKey eq '%s'", safeCategory)
options := &aztables.ListEntitiesOptions{
Filter: &filter,
}
pager := table.NewListEntitiesPager(options)
Elemezheti a lekérdezés More lapszámozott eredményeit a lapozó függvényével annak megállapításához, hogy van-e több oldal, majd a NextPage függvény az eredmények következő oldalának lekéréséhez.
for pager.More() {
response, err := pager.NextPage(context.TODO())
if err != nil {
panic(err)
}
for _, entityBytes := range response.Entities {
var entity aztables.EDMEntity
err := json.Unmarshal(entityBytes, &entity)
if err != nil {
panic(err)
}
writeOutput(fmt.Sprintf("Found entity:\t%s\t%s", entity.Properties["Name"], entity.RowKey))
}
}
Erőforrások tisztítása
Ha már nincs szüksége a mintaalkalmazásra vagy erőforrásokra, távolítsa el a megfelelő üzembe helyezést és az összes erőforrást.
azd down