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:
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.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.
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 };
Gezgin bölmesinde, sunucu altında environment adlı bir klasör oluşturun. ortam klasöründe environment.jsadlı bir dosya oluşturun.
mongo.js dosyasından ,
key
vecosmosPort
parametreleri içindbName
değ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:
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.
environment.js dosyasında değerini
port
10255 olarak değiştirin.const port = 10255;
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ştirin
accountName
.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.
Birincil anahtarı değer olarak
key
environment.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:
Gezgin bölmesinde, sunucu klasörünün altında hero.model.jsadlı bir dosya oluşturun.
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:
Gezgin bölmesinde, sunucu klasörünün altında hero.service.jsadlı bir dosya oluşturun.
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:
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ğırmakheroService.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"} // ]) });
routes.js dosyasında
require
hero hizmeti:const heroService = require('./hero.service');
hero.service.js dosyasında, ve parametrelerini almak
req
res
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:
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.
Şimdi tarayıcıya geçin. Geliştirici araçları ve Ağ sekmesini açın. adresine
http://localhost:3000
gittiğimizde uygulamamızı görürsünüz.
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:
- Azure Cosmos DB hesabını oluşturduğunuz kaynak grubuna gidin.
- Kaynak grubunu sil'i seçin.
- 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.
- Tüm 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 hızlarını biliyorsanız Azure Cosmos DB kapasite planlayıcısı kullanarak istek birimlerini tahmin etme hakkındaki bilgileri okuyun