Azure Cosmos DB'nin MongoDB API'siyle Angular uygulaması oluşturma - Azure Cosmos DB'ye bağlanmak için Mongoose kullanma

aşağıdakiler için geçerlidir: MongoDB

Important

Mevcut bir MongoDB uygulamasını geçirmek mi yoksa MongoDB Sorgu Dili (MQL) özelliklerini kullanmak mı istiyorsunuz? Azure DocumentDB'ye göz atın.

99,999% kullanılabilirlik hizmet düzeyi sözleşmesi (SLA), anında otomatik ölçeklendirme ve birden çok bölgede otomatik yük devretme ile yüksek ölçekli senaryolar için bir veritabanı çözümü mü arıyorsunuz? NoSQL için Azure Cosmos DB'yi göz önünde bulundurun.

Bu çok bölümlü öğreticide Express ve Angular ile bir Node.js uygulaması oluşturma ve bunu MongoDB için Azure Cosmos DB API'siyle yapılandırılmış Azure Cosmos DB hesabınıza bağlama gösterilmektedir. Bu makale öğreticinin 5. Bölümünü açıklamakta ve 4. Bölümü temel almaktadır.

Öğreticinin bu bölümünde şunları yapacaksınız:

  • Azure Cosmos DB'ye bağlanmak için Mongoose kullanın.
  • Azure Cosmos DB bağlantı dizesini alın.
  • Hero modelini oluşturun.
  • Hero verilerini almak için Hero hizmetini oluşturun.
  • Uygulamayı yerel olarak çalıştırın.

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Prerequisites

  • Bu eğitime başlamadan önce, Bölüm 4'teki adımları tamamlayın.

  • Bu öğretici, Azure CLI'yi yerel olarak çalıştırmanızı gerektirir. Azure CLI 2.0 veya sonraki bir sürümünü yüklemiş olmanız gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Azure CLI'yı yüklemeniz veya yükseltmeniz gerekiyorsa bkz . Azure CLI 2.0'ı yükleme.

  • Bu eğitim, uygulamanın adım adım nasıl oluşturulacağını size gösterir. Tamamlanmış projeyi indirmek isterseniz, tamamlanmış uygulamayı github'daki angular-cosmosdb deposundan alabilirsiniz.

Bağlanmak için Mongoose kullanma

Mongoose, MongoDB ve Node.js için bir nesne veri modelleme (ODM) kitaplığıdır. Mongoose'u kullanarak Azure Cosmos DB hesabınıza bağlanabilirsiniz. Mongoose'u yüklemek ve Azure Cosmos DB'ye bağlanmak için aşağıdaki adımları kullanın:

  1. MongoDB ile konuşmak için kullanılan bir API olan mongoose npm modülünü yükleyin.

    npm install mongoose@5.13.15 --save
    

    Important

    MongoDB için Azure Cosmos DB, Mongoose'un 5.13.15 sürümüne kadar uyumludur. Daha fazla bilgi için mongoose GitHub deposundaki sorun tartışmasını inceleyin.

  2. Sunucu klasöründe mongo.js adlı bir dosya oluşturun. Azure Cosmos DB hesabınızın bağlantı ayrıntılarını bu dosyaya ekleyeceksiniz.

  3. Aşağıdaki kodu mongo.js dosyasına kopyalayın. Kod aşağıdaki işlevleri sağlar:

    • Mongoose gerektirir.

    • Mongo sözünü, ES6/ES2015 ve sonraki sürümlerde yerleşik olarak bulunan temel sözü kullanacak şekilde geçersiz kılar.

    • Hazırlama, üretim veya geliştirme aşamasında olmanıza bağlı olarak belirli şeyleri ayarlamanıza olanak tanıyan bir env dosyasını çağırır. Bu dosyayı sonraki bölümde oluşturacaksınız.

    • env dosyasında ayarlanan MongoDB bağlantı dizesi içerir.

    • Mongoose’u çağıran bir bağlanma işlevi oluşturur.

      const mongoose = require('mongoose');
      /**
      * Set to Node.js native promises
      * Per https://mongoosejs.com/docs/promises.html
      */
      mongoose.Promise = global.Promise;
      
      const env = require('./env/environment');
      
      // eslint-disable-next-line max-len
      const mongoUri = `mongodb://${env.accountName}:${env.key}@${env.accountName}.documents.azure.com:${env.port}/${env.databaseName}?ssl=true`;
      
      function connect() {
      mongoose.set('debug', true);
      return mongoose.connect(mongoUri, { useMongoClient: true });
      }
      
      module.exports = {
      connect,
      mongoose
      };
      
  4. Gezgin bölmesinde, sunucu altında environment adlı bir klasör oluşturun. Ortam klasöründe environment.js adlı bir dosya oluşturun.

  5. mongo.js dosyasında, , dbNameve key parametreleri için cosmosPortdeğerleri eklememiz gerekir. Aşağıdaki kodu environment.js dosyasına kopyalayın:

    // TODO: replace if yours are different
    module.exports = {
      accountName: 'your-cosmosdb-account-name-goes-here',
      databaseName: 'admin', 
      key: 'your-key-goes-here',
      port: 10255
    };
    

Bağlantı dizesini al

Uygulamanızı Azure Cosmos DB'ye bağlamak için uygulamanın yapılandırma ayarlarını güncelleştirmeniz gerekir. Ayarları güncelleştirmek için aşağıdaki adımları kullanın:

  1. Azure portalında, Azure Cosmos DB hesabınızın bağlantı noktası numarasını, Azure Cosmos DB hesap adını ve birincil anahtar değerlerini alın.

  2. environment.js dosyasında değerini port 10255 olarak değiştirin.

    const port = 10255;
    
  3. environment.js dosyasında, accountName değerini öğreticinin Bölüm 4'te oluşturduğunuz Azure Cosmos DB hesabınızın adıyla değiştirin.

  4. Terminal penceresinde aşağıdaki CLI komutunu kullanarak Azure Cosmos DB hesabı için birincil anahtarı alın:

    az cosmosdb keys list --name <cosmosdb-name> -g myResourceGroup
    

    <cosmosdb-name>, öğreticinin 4. Bölümünde oluşturduğunuz Azure Cosmos DB hesabının adıdır.

  5. Birincil anahtarı, değeri olarak key dosyasına kopyalayın.

Artık uygulamanız Azure Cosmos DB'ye bağlanmak için gerekli tüm bilgilere sahiptir.

Hero modeli oluşturma

Ardından, bir model dosyası tanımlayarak Azure Cosmos DB'de depolayacak verilerin şemasını tanımlamanız gerekir. Verilerin şemasını tanımlayan bir Hero modeli oluşturmak için aşağıdaki adımları kullanın:

  1. Gezgin bölmesinde, sunucu klasörünün altında hero.model.js adlı bir dosya oluşturun.

  2. Aşağıdaki kodu hero.model.js dosyasına kopyalayın. Kod aşağıdaki işlevleri sağlar:

    • Mongoose gerektirir.
    • Bir kimliği, adı ve tanımı olan yeni bir şema oluşturur.
    • Şemayı kullanarak bir model oluşturur.
    • Modeli aktarır.
    • Koleksiyonu Heroes olarak adlandırın (Mongoose çoğul adlandırma kurallarına göre koleksiyonun varsayılan adı olan Heros yerine).
    const mongoose = require('mongoose');
    
    const Schema = mongoose.Schema;
    
    const heroSchema = new Schema(
      {
        id: { type: Number, required: true, unique: true },
        name: String,
        saying: String
      },
      {
        collection: 'Heroes'
      }
    );
    
    const Hero = mongoose.model('Hero', heroSchema);
    
    module.exports = Hero;
    

Hero hizmeti oluşturma

Hero modelini oluşturduktan sonra verileri okumak ve listeleme, oluşturma, silme ve güncelleştirme işlemlerini gerçekleştirmek için bir hizmet tanımlamanız gerekir. Azure Cosmos DB'den verileri sorgulayan bir Hero hizmeti oluşturmak için aşağıdaki adımları kullanın:

  1. Gezgin bölmesinde, sunucu klasörünün altında hero.service.js adlı bir dosya oluşturun.

  2. Aşağıdaki kodu hero.service.js dosyasına kopyalayın. Kod aşağıdaki işlevleri sağlar:

    • Oluşturduğunuz modeli alır.
    • Veritabanına bağlanır.
    • Üzerinde bir sorgu tanımlamak için docquery yöntemini kullanarak tüm kahramanları döndüren bir hero.find değişkeni oluşturur.
    • 200 yanıt durumuna sahip tüm kahramanların listesini almak için docquery.exec işleviyle bir sorgu çalıştırır.
    • Durum 500 ise hata iletisini geri gönderir.
    • Kahramanları getirir, çünkü modülleri kullanıyoruz.
    const Hero = require('./hero.model');
    
    require('./mongo').connect();
    
    function getHeroes() {
      const docquery = Hero.find({});
      docquery
        .exec()
        .then(heroes => {
          res.status(200).json(heroes);
        })
        .catch(error => {
          res.status(500).send(error);
          return;
        });
    }
    
    module.exports = {
      getHeroes
    };
    

Rotaları yapılandırın

Ardından, alma, oluşturma, okuma ve silme isteklerinin URL'lerini işlemek için yollar ayarlamanız gerekir. Yönlendirme yöntemleri geri çağırma işlevlerini (işleyici işlevleri olarak da adlandırılır) belirtir. Bu işlevler, uygulama belirtilen uç noktaya ve HTTP yöntemine bir istek aldığında çağrılır. Hero hizmetini eklemek ve yollarınızı tanımlamak için aşağıdaki adımları kullanın:

  1. Visual Studio Code'daki routes.js dosyasında, örnek kahraman verilerini gönderen res.send işlevi yorum satırı haline getirin. heroService.getHeroes işlevini çağırmak için bir satır ekleyin.

    router.get('/heroes', (req, res) => {
      heroService.getHeroes(req, res);
    //  res.send(200, [
    //      {"id": 10, "name": "Starlord", "saying": "oh yeah"}
    //  ])
    });
    
  2. routes.js dosyasında hero require hizmeti:

    const heroService = require('./hero.service'); 
    
  3. hero.service.js dosyasında, getHeroes ve req parametrelerini alacak şekilde res işlevini aşağıdaki gibi güncelleyin:

    function getHeroes(req, res) {
    

Önceki kodu gözden geçirmek ve adım adım incelemek için bir dakika ayıralım. İlk olarak düğüm sunucusunu ayarlayan index.js dosyasına giriyoruz. Rotalarınızı ayarlayıp tanımladığını fark edin. Ardından, routes.js dosyanız hero hizmetiyle iletişime geçer ve ona, getHeroes gibi işlevlerinizi alması ve isteği ve yanıtı iletmesi gerektiğini söyler. hero.service.js dosyası modeli alır ve Mongo'ya bağlanır. Ardından çağırdığımızda getHeroes komutunu yürütür ve 200 yanıtını döndürür.

Uygulamayı çalıştırma

Ardından, aşağıdaki adımları kullanarak uygulamayı çalıştırın:

  1. Visual Studio Code'da tüm değişikliklerinizi kaydedin. Sol tarafta Hata Ayıkla düğmesinive ardından Hata Ayıklamayı Başlat düğmesini seçin.

  2. Şimdi tarayıcıya geçin. Geliştirici araçları ve Ağ sekmesini açın. adresine http://localhost:3000gittiğimizde uygulamamızı görürsünüz.

    Azure Portal’daki yeni Azure Cosmos DB hesabı

Henüz uygulamada depolanan kahraman yok. Bu öğreticinin sonraki bölümünde put, push ve delete işlevlerini ekleyeceğiz. Ardından Azure Cosmos DB veritabanımıza Mongoose bağlantılarını kullanarak kullanıcı arabiriminden kahraman ekleyebilir, güncelleştirebilir ve silebiliriz.

Kaynakları temizle

Kaynaklara artık ihtiyacınız kalmadığında kaynak grubunu, Azure Cosmos DB hesabını ve tüm ilgili kaynakları silebilirsiniz. Kaynak grubunu silmek için aşağıdaki adımları kullanın:

  1. Azure Cosmos DB hesabını oluşturduğunuz kaynak grubuna gidin.
  2. Kaynak grubunu sil seçeneğini seçin.
  3. Silinecek kaynak grubunun adını onaylayın ve Sil'i seçin.

Sonraki Adımlar

Uygulamaya Post, Put ve Delete işlevlerini eklemek için öğreticinin 6. Bölümüne geçin:

Azure Cosmos DB'ye geçiş için kapasite planlaması yapmaya mı çalışıyorsunuz? Kapasite planlaması için mevcut veritabanı kümeniz hakkındaki bilgileri kullanabilirsiniz.

  • Tek bildiğiniz mevcut veritabanı kümenizdeki sanal çekirdek ve sunucu sayısıysa, sanal çekirdek veya vCPU kullanarak istek birimlerini tahmin etme hakkında bilgi edinin
  • Geçerli veritabanı iş yükünüz için tipik istek oranlarını biliyorsanız, Azure Cosmos DB kapasite planlayıcısını kullanarak istek birimlerini tahmin etme hakkında bilgi edinin.