Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu kılavuz, Azure DocumentDB kümesine bağlanmak için bir Node.js konsol uygulaması oluşturmanıza yardımcı olur. Geliştirme ortamınızı hazırlar, kimlik doğrulaması yapmak için JavaScript için Azure SDK'sından paketi kullanır @azure/identity ve veritabanındaki belgeler üzerinde ortak işlemler gerçekleştirirsiniz.
Prerequisites
Azure aboneliği
- Azure aboneliğiniz yoksa ücretsiz bir hesap oluşturun
Mevcut bir Azure DocumentDB kümesi
- Kümeniz yoksa yeni bir küme oluşturun
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz. Azure Cloud Shell'i kullanmaya başlama.
CLI referans komutlarını yerel olarak çalıştırmayı tercih ediyorsanız, Azure CLI'yi yükleyin. Windows veya macOS üzerinde çalışıyorsanız, Azure CLI'yi bir Docker konteynerinde çalıştırmayı düşünün. Daha fazla bilgi için Azure CLI'nin bir Docker konteynerında nasıl çalıştırılacağını inceleyin.
Yerel bir kurulum kullanıyorsanız, az login komutunu kullanarak Azure CLI'ye giriş yapın. Kimlik doğrulama işlemini tamamlamak için, terminalinizde görüntülenen adımları takip edin. Diğer oturum açma seçenekleri için bkz. Azure CLI kullanarak Azure'da kimlik doğrulaması.
İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma ve yönetme.
Yüklü olan sürümü ve bağımlı kütüphaneleri bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
Kimlik verilen
rootrolünüzle küme için yapılandırılan Microsoft Entra kimlik doğrulaması.- Microsoft Entra kimlik doğrulamasını etkinleştirmek için yapılandırma kılavuzunu gözden geçirin.
Node'un en son uzun vadeli destek (LTS) sürümü
- TypeScript'in en son sürümü.
Konsol uygulamanızı yapılandırma
Ardından, yeni bir konsol uygulaması projesi oluşturun ve kümenizde kimlik doğrulaması yapmak için gerekli kitaplıkları içeri aktarın.
Projeniz için yeni bir dizin oluşturun ve ile
npm initbaşlatın.mkdir mongodb-app cd mongodb-app npm init -yProjenizde TypeScript'i ayarlayın.
npm install typescript ts-node @types/node --save-dev npx tsc --initUygulamanız için ana app.ts TypeScript dosyasını oluşturun.
touch app.ts@azure/identityKimlik doğrulaması için kitaplığı yükleyin.npm install @azure/identitymongodbKitaplığı yükleyin.npm install mongodb
Kümeye bağlanma
Şimdi kitaplığını Azure.IdentityTokenCredential kullanarak kümenize bağlanmak için bir kullanın. Resmi MongoDB sürücüsünün, kümeye bağlanırken kullanılmak üzere Microsoft Entra'dan belirteçleri almak için uygulanması gereken özel bir arabirimi vardır.
JavaScript dosyanızın üst kısmındaki gerekli modülleri içeri aktarın.
import { MongoClient } from 'mongodb'; import { DefaultAzureCredential } from '@azure/identity';TokenCredentialörneğinden gerektiğinde belirteçleri almayı sağlayan bir belirteç geri çağırma işlevi oluşturun.const azureIdentityTokenCallback = async (_, credential) => { const tokenResponse = await credential.getToken(['https://ossrdbms-aad.database.windows.net/.default']); if (!tokenResponse || !tokenResponse.token) { throw new Error('Failed to retrieve a valid access token.'); } return { accessToken: tokenResponse.token, expiresInSeconds: Math.floor((tokenResponse.expiresOnTimestamp - Date.now()) / 1000), }; };Azure DocumentDB kümenize bağlanmak için küme adı değişkeninizi ayarlayın.
const clusterName = '<azure-documentdb-cluster-name>';DefaultAzureCredentialörneği oluşturun.const credential = new DefaultAzureCredential();OpenID Connect (OIDC) kimlik doğrulaması ile yapılandırılmış bir MongoDB istemcisi oluşturun.
client = new MongoClient(`mongodb+srv://${clusterName}.global.mongocluster.cosmos.azure.com/`, { connectTimeoutMS: 120000, tls: true, retryWrites: true, authMechanism: 'MONGODB-OIDC', authMechanismProperties: { OIDC_CALLBACK: (params) => azureIdentityTokenCallback(params, credential), ALLOWED_HOSTS: ['*.azure.com'] } }); console.log('Client created');
TypeScript dosyanızın en üstündeki gerekli modülleri içeri aktarın.
import { AccessToken, DefaultAzureCredential, TokenCredential } from '@azure/identity'; import { Collection, Db, Filter, FindCursor, MongoClient, OIDCCallbackParams, OIDCResponse, UpdateFilter, UpdateOptions, UpdateResult, WithId } from 'mongodb';TokenCredentialörneğinden gerektiğinde belirteçleri almayı sağlayan bir belirteç geri çağırma işlevi oluşturun.const AzureIdentityTokenCallback = async (params: OIDCCallbackParams, credential: TokenCredential): Promise<OIDCResponse> => { const tokenResponse: AccessToken | null = await credential.getToken(['https://ossrdbms-aad.database.windows.net/.default']); return { accessToken: tokenResponse?.token || '', expiresInSeconds: (tokenResponse?.expiresOnTimestamp || 0) - Math.floor(Date.now() / 1000) }; };Azure DocumentDB kümenize bağlanmak için küme adı değişkeninizi ayarlayın.
const clusterName: string = '<azure-documentdb-cluster-name>';DefaultAzureCredentialörneği oluşturun.const credential: TokenCredential = new DefaultAzureCredential();OpenID Connect (OIDC) kimlik doğrulaması ile yapılandırılmış bir MongoDB istemcisi oluşturun.
const client = new MongoClient( `mongodb+srv://${clusterName}.global.mongocluster.cosmos.azure.com/`, { connectTimeoutMS: 120000, tls: true, retryWrites: true, authMechanism: 'MONGODB-OIDC', authMechanismProperties: { OIDC_CALLBACK: (params: OIDCCallbackParams) => AzureIdentityTokenCallback(params, credential), ALLOWED_HOSTS: ['*.azure.com'] } }); console.log('Client created');
Yaygın işlemler gerçekleştirme
Son olarak veritabanları, koleksiyonlar ve belgelerle ortak görevleri gerçekleştirmek için resmi kitaplığı kullanın. Burada, koleksiyonlarınızı ve öğelerinizi yönetmek için MongoDB veya DocumentDB ile etkileşimde bulunurken kullandığınız sınıfları ve yöntemleri kullanırsınız.
Adına göre veritabanınızın referansını alın.
const databaseName = process.env.SETTINGS__DATABASENAME ?? 'cosmicworks'; console.log('Database pointer created');Koleksiyonunuza bir referans alın.
const collectionName = process.env.SETTINGS__COLLECTIONNAME ?? 'products'; console.log('Collection pointer created');kullanarak
collection.updateOnebir belge oluşturun ve koleksiyona ekleyin.const filter = { _id: request.params._id }; const payload = { $set: document }; const options = { upsert: true }; var response = await collection.updateOne(filter, payload, options); if (response.acknowledged) { console.log(`Documents upserted count:\t${response.matchedCount}`); }Koleksiyondan belirli bir belgeyi almak için kullanın
collection.findOne.const filter = { _id: request.params.id }; var document = await collection.findOne(filter, options); console.log(`Read document _id:\t${document._id}`);kullanarak
collection.findbir filtreyle eşleşen birden çok belgeyi sorgulama.var filter = { category: 'gear-surf-surfboards' }; var documents = collection.find(filter); for await (const document of documents) { console.log(`Found document:\t${JSON.stringify(document)}`); }İşiniz bittiğinde MongoDB istemci bağlantısını kapatın.
await client.close();
Adına göre veritabanınızın referansını alın.
const database: Db = client.db('<database-name>'); console.log('Database pointer created');Koleksiyonunuza bir referans alın.
const collection: Collection<Product> = database.collection<Product>('<collection-name>'); console.log('Collection pointer created');Ürün belgelerinizi temsil eden bir arabirim tanımlayın.
interface Product { _id: string; category: string; name: string; quantity: number; price: number; clearance: boolean; }kullanarak
collection.updateOnebir belge oluşturun ve koleksiyona ekleyin.var document: Product = { _id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb', category: 'gear-surf-surfboards', name: 'Yamba Surfboard', quantity: 12, price: 850.00, clearance: false }; var query: Filter<Product> = { _id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb' }; var payload: UpdateFilter<Product> = { $set: document }; var options: UpdateOptions = { upsert: true }; var response: UpdateResult<Product> = await collection.updateOne(query, payload, options); if (response.acknowledged) { console.log(`Documents upserted count:\t${response.matchedCount}`); }Koleksiyondan belirli bir belgeyi almak için kullanın
collection.findOne.var query: Filter<Product> = { _id: 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb', category: 'gear-surf-surfboards' }; var response: WithId<Product> | null = await collection.findOne(query); var read_item: Product = response as Product; console.log(`Read document _id:\t${read_item._id}`);kullanarak
collection.findbir filtreyle eşleşen birden çok belgeyi sorgulama.var query: Filter<Product> = { category: 'gear-surf-surfboards' }; var response: FindCursor<WithId<Product>> = collection.find(query); for await (const document of response) { console.log(`Found document:\t${JSON.stringify(document)}`); }İşiniz bittiğinde MongoDB istemci bağlantısını kapatın.
await client.close();