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

ŞUNLAR IÇIN GEÇERLIDIR: MongoDB

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 işlemleri gösterilmektedir. Bu makalede öğreticinin 5. Bölümü açıklanır ve Bölüm 4'te derlemeler açıklanır.

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

  • Mongoose kullanarak Azure Cosmos DB'ye bağlanın.
  • Azure Cosmos DB bağlantı dizenizi 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.

Önkoşullar

  • Bu öğreticiye 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 öğretici, uygulamayı adım adım derleme adım adım size yol 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 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
    

    Önemli

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

  2. Sunucu klasöründe mongo.jsadlı 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.

    • ES6/ES2015 ve sonraki sürümlerde yerleşik olarak bulunan temel promise'i kullanmak için Mongo sözünü 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ı bir sonraki bölümde oluşturacaksınız.

    • Env dosyasında ayarlanan MongoDB bağlantı dizesini 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.jsadlı bir dosya oluşturun.

  5. mongo.js dosyasından , keyve cosmosPort parametreleri için dbNamedeğ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 alma

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 bağlantı noktası numarasını, Azure Cosmos DB hesap adını ve Azure Cosmos DB hesabınız için 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 değerini, öğreticinin 4. Bölümünde oluşturduğunuz Azure Cosmos DB hesabının adıyla değiştirinaccountName.

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

    az cosmosdb list-keys --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ğer olarak keyenvironment.jsdosyası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.jsadlı 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 deyişi olan yeni bir şema oluşturur.
    • Şemayı kullanarak bir model oluşturur.
    • Modeli dışarı 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.jsadlı 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.
    • docquery Yöntemini kullanarak tüm kahramanları hero.find döndüren bir sorgu tanımlayan bir değişken oluşturur.
    • yanıt durumunun docquery.exec 200 olduğu tüm kahramanların listesini alma sözüyle işleviyle bir sorgu çalıştırır.
    • Durum 500 ise hata iletisini geri gönderir.
    • Modülleri kullandığımız için kahramanları alır.
    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
    };
    

Yolları yapılandırma

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. Uygulama belirtilen uç noktaya ve HTTP yöntemine bir istek aldığında bu işlevler ç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 routes.jsdosyasında, örnek hero verilerini gönderen işlevi açıklama satırı res.send yapın. Bunun yerine işlevini çağırmak heroService.getHeroes 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 require hero hizmeti:

    const heroService = require('./hero.service'); 
    
  3. hero.service.js dosyasında, ve parametrelerini almak reqres için işlevini aşağıdaki gibi güncelleştiringetHeroes:

    function getHeroes(req, res) {
    

Şimdi bir dakika içinde gözden geçirelim ve önceki kodu gözden geçirelim. İlk olarak düğüm sunucusunu ayarlayan index.js dosyasına geliriz. Rotalarınızı ayarlayıp tanımladığını fark edin. Ardından, routes.js dosyanız hero hizmetiyle konuşur ve getHeroes gibi işlevlerinizi alıp isteği ve yanıtı iletmesini 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ı geri 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üğmesini ve 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ı

Uygulamada henüz hiçbir kahraman depolanmadı. 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 heroes ekleyebilir, güncelleştirebilir ve silebiliriz.

Kaynakları temizleme

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'i seçin.
  3. Silinecek kaynak grubunun adını onaylayın ve Sil'i seçin.

Sonraki adımlar

Uygulamaya Post, Put ve Delete işlevleri 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.