Çoğunlukla tüm modern web uygulamalarının arka uçta bir tür veri depolama sistemi vardır. Örneğin, bir web alışveriş uygulaması durumunda, bir ürünün fiyatı gibi veriler veri tabanında saklanacaktır.
Node js çerçevesi, hem ilişkisel (Oracle ve MS SQL Server gibi) hem de ilişkisel olmayan veritabanları (MongoDB gibi) ile veritabanlarıyla çalışabilir. Bu eğitimde, veritabanlarını Node js uygulamaları içinden nasıl kullanabileceğimizi göreceğiz.
Bu eğitimde öğreneceksiniz-
- Node.js ve NoSQL Veritabanları
- MongoDB ve Node.js'yi kullanma
- İçeriği depolamak ve sunmak için MongoDB ile bir node express uygulaması nasıl oluşturulur
Node.js ve NoSQL Veritabanları
Yıllar geçtikçe, MongoDB ve MySQL gibi NoSQL veritabanı, veri depolamak için veritabanları olarak oldukça popüler hale geldi. Bu veritabanlarının her tür içeriği ve özellikle her tür formatta depolayabilme yeteneği, bu veritabanlarını bu kadar ünlü kılan şeydir.
Node.js, veritabanları olarak hem MySQL hem de MongoDB ile çalışma yeteneğine sahiptir. Bu veritabanlarından herhangi birini kullanmak için, Düğüm paket yöneticisini kullanarak gerekli modülleri indirmeniz ve kullanmanız gerekir.
MySQL için gerekli modül "mysql" olarak adlandırılır ve MongoDB'yi kullanmak için kurulması gereken modül "Mongoose" dur.
Bu modüller ile Node.js'de aşağıdaki işlemleri gerçekleştirebilirsiniz.
- Bağlantı havuzunu yönetin - Node.js tarafından korunması ve kaydedilmesi gereken MySQL veritabanı bağlantılarının sayısını burada belirtebilirsiniz.
- Bir veritabanına bağlantı oluşturun ve kapatın. Her iki durumda da, "oluştur" ve "kapat" bağlantı yöntemleri çalıştırıldığında çağrılabilen bir geri arama işlevi sağlayabilirsiniz.
- Verileri almak için ilgili veritabanlarından veri almak için sorgular yürütülebilir.
- Veri eklemek, verileri silmek ve güncellemek gibi veri manipülasyonu da bu modüller ile gerçekleştirilebilir.
Kalan konular için, Node.js içinde MongoDB veritabanları ile nasıl çalışabileceğimize bakacağız.
MongoDB ve Node.js'yi kullanma
Önceki başlıkta tartışıldığı gibi MongoDB, Node.js ile birlikte kullanılan en popüler veri tabanlarından biridir.
Bu bölümde göreceğiz
MongoDB veritabanı ile nasıl bağlantı kurabiliriz?
Bir veri tabanından veri okuma ve bir MongoDB veri tabanına kayıt ekleme, silme ve güncelleme gibi normal işlemleri nasıl gerçekleştirebiliriz.
Bu bölümün amacı doğrultusunda, aşağıdaki MongoDB verilerinin yerinde olduğunu varsayalım.
Veritabanı adı: EmployeeDB
Koleksiyon adı: Çalışan
Documents{{Employeeid : 1, Employee Name : Guru99},{Employeeid : 2, Employee Name : Joe},{Employeeid : 3, Employee Name : Martin},}
- NPM Modüllerini Takma
Mongo'ya bir Node uygulamasından erişmek için bir sürücüye ihtiyacınız var. Mevcut bir dizi Mongo sürücüsü var, ancak MongoDB en popülerler arasında. MongoDB modülünü kurmak için aşağıdaki komutu çalıştırın
npm mongodb yüklemek
- MongoDB veri tabanına bağlantı oluşturma ve kapatma. Aşağıdaki kod parçacığı, MongoDB veritabanına bir bağlantının nasıl oluşturulacağını ve kapatılacağını gösterir.
Kod Açıklaması:
- İlk adım, gereksinim fonksiyonu aracılığıyla yapılan firavun faresi modülünü dahil etmektir. Bu modül yerleştirildikten sonra, veritabanına bağlantılar oluşturmak için bu modülde bulunan gerekli işlevleri kullanabiliriz.
- Ardından, veri tabanına bağlantı dizimizi belirtiyoruz. Bağlantı dizesinde, geçirilen 3 anahtar değer vardır.
- İlki, bir mongoDB veritabanına bağlandığımızı belirten 'mongodb'.
- Bir sonraki 'localhost', yani yerel makinedeki bir veritabanına bağlanıyoruz.
- Sonraki, MongoDB veritabanımızda tanımlanan veritabanının adı olan 'EmployeeDB'dir.
- Bir sonraki adım, veritabanımıza gerçekten bağlanmaktır. Bağlan işlevi URL'mizi alır ve bir geri arama işlevi belirtme özelliğine sahiptir. Veritabanına bağlantı açıldığında çağrılacaktır. Bu bize veritabanı bağlantısının başarılı olup olmadığını bilme fırsatı verir.
- İşlevde, başarılı bir bağlantının oluşturulduğunu belirtmek için konsola "Bağlantı kuruldu" dizesini yazıyoruz.
- Son olarak, db.close deyimini kullanarak bağlantıyı kapatıyoruz.
Yukarıdaki kod doğru bir şekilde çalıştırılırsa, "Bağlandı" dizisi aşağıda gösterildiği gibi konsola yazılacaktır.
- MongoDB veritabanındaki verileri sorgulama - MongoDB sürücüsünü kullanarak MongoDB veritabanından da veri alabiliriz.
Aşağıdaki bölüm, EmployeeDB veritabanımızdaki Employee koleksiyonumuzdaki tüm belgeleri almak için sürücüyü nasıl kullanabileceğimizi gösterecektir . Bu, çalışanlarla ilgili tüm belgeleri içeren MongoDB veritabanımızdaki koleksiyondur. Her belgenin, belgenin değerlerini tanımlamak için bir nesne kimliği, Çalışan adı ve çalışan kimliği vardır.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {var cursor = db.collection('Employee').find();cursor.each(function(err, doc) {console.log(doc);});});
Kod Açıklaması:
-
İlk adımda, bir imleç oluşturuyoruz (İmleç, bir veritabanından getirilen çeşitli kayıtları işaret etmek için kullanılan bir işaretçidir. İmleç daha sonra veritabanındaki farklı kayıtlar arasında yineleme yapmak için kullanılır. Burada bir değişken adı, işaretçiyi veritabanından getirilen kayıtlara depolamak için kullanılacak olan imleç olarak adlandırılır.) MongoDb koleksiyonundan getirilen kayıtları işaret eder. Ayrıca kayıtların alınacağı 'Çalışan' koleksiyonunu belirleme olanağına da sahibiz. Find () işlevi, tüm belgeleri MongoDB koleksiyonundan almak istediğimizi belirtmek için kullanılır.
-
Şimdi imlecimizi yineliyoruz ve imleçteki her belge için bir işlev yürüteceğiz.
-
İşlevimiz, her belgenin içeriğini konsola yazdırmaktır.
Not: - Belirli bir kaydı bir veritabanından almak da mümkündür. Bu, find () işlevinde arama koşulu belirtilerek yapılabilir. Örneğin, çalışan adı Guru99 olan kaydı getirmek istiyorsanız, bu ifade aşağıdaki gibi yazılabilir.
var cursor=db.collection('Employee').find({EmployeeName: "guru99"})
Yukarıdaki kod başarıyla yürütülürse, konsolunuzda aşağıdaki çıktı görüntülenecektir.
Çıktı:
Çıktıdan
- Koleksiyondaki tüm belgelerin alındığını açıkça görebileceksiniz. Bu, mongoDB bağlantısının (db) find () yöntemini kullanarak ve imleci kullanarak tüm belgelerde yineleme yaparak mümkündür.
- Bir koleksiyona belge ekleme - Belgeler, MongoDB kitaplığı tarafından sağlanan insertOne yöntemi kullanılarak bir koleksiyona eklenebilir. Aşağıdaki kod parçacığı, bir mongoDB koleksiyonuna nasıl belge ekleyebileceğimizi göstermektedir.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').insertOne({Employeeid: 4,EmployeeName: "NewEmployee"});});
Kod Açıklaması:
- Burada, Employee koleksiyonuna bir belge eklemek için MongoDB kütüphanesinden insertOne yöntemini kullanıyoruz.
- Çalışan koleksiyonuna nelerin eklenmesi gerektiğine dair belge ayrıntılarını belirliyoruz.
Şimdi MongoDB veritabanınızın içeriğini kontrol ederseniz, Employeeid of 4 ve EmployeeName of "NewEmployee" nin Employee koleksiyonuna eklenmiş olduğu kaydı bulacaksınız.
Not: Konsol, kayıt veritabanına eklendiği ve burada hiçbir çıktı gösterilemediği için herhangi bir çıktı göstermeyecektir.
Verilerin veri tabanına düzgün bir şekilde eklenip eklenmediğini kontrol etmek için MongoDB'de aşağıdaki komutları uygulamanız gerekir.
- EmployeeDB'yi kullanın
- db.Employee.find ({Employeeid: 4})
İlk ifade EmployeeDb veritabanına bağlı olmanızı sağlar. İkinci ifade, çalışan kimliği 4 olan kaydı arar.
- Bir koleksiyondaki belgeleri güncelleme - Belgeler, MongoDB kitaplığı tarafından sağlanan updateOne yöntemi kullanılarak bir koleksiyonda güncellenebilir. Aşağıdaki kod parçacığı, bir mongoDB koleksiyonundaki bir belgenin nasıl güncelleneceğini gösterir.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').updateOne({"EmployeeName": "NewEmployee"}, {$set: {"EmployeeName": "Mohan"}});});
Kod Açıklaması:
- Burada, bir mongoDB koleksiyonundaki bir belgeyi güncellemek için kullanılan MongoDB kütüphanesinden "updateOne" yöntemini kullanıyoruz.
- Hangi belgenin güncellenmesi gerektiğini arama kriterlerini belirliyoruz. Bizim durumumuzda, EmployeeName "NewEmployee" olan belgeyi bulmak istiyoruz.
- Daha sonra, belgenin ÇalışanAdı değerini "NewEmployee" den "Mohan" a ayarlamak istiyoruz.
Şimdi MongoDB veritabanınızın içeriğini kontrol ederseniz, Employee koleksiyonunda Employeeid of 4 ve EmployeeName of "Mohan" ile birlikte kaydı bulacaksınız.
Verilerin veritabanında uygun şekilde güncellendiğini kontrol etmek için MongoDB'de aşağıdaki komutları uygulamanız gerekir.
- EmployeeDB'yi kullanın
- db.Employee.find ({Employeeid: 4})
İlk ifade EmployeeDb veritabanına bağlı olmanızı sağlar. İkinci ifade, çalışan kimliği 4 olan kaydı arar.
- Bir koleksiyondaki belgeleri silme - Bir koleksiyondaki belgeler , MongoDB kitaplığı tarafından sağlanan "deleteOne" yöntemi kullanılarak silinebilir. Aşağıdaki kod parçacığı, bir mongoDB koleksiyonundaki bir belgenin nasıl silineceğini gösterir.
var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';MongoClient.connect(url, function(err, db) {db.collection('Employee').deleteOne({"EmployeeName": "Mohan"});});
Kod Açıklaması:
- Burada, bir mongoDB koleksiyonundaki bir belgeyi silmek için kullanılan MongoDB kütüphanesinden "deleteOne" yöntemini kullanıyoruz.
- Hangi belgenin silinmesi gerektiğini arama kriterlerini belirliyoruz. Bizim durumumuzda, EmployeeName "Mohan" olan belgeyi bulmak ve bu belgeyi silmek istiyoruz.
Şimdi MongoDB veritabanınızın içeriğini kontrol ederseniz, Employeeid of 4 ve EmployeeName of "Mohan" ile birlikte kaydı Employee koleksiyonundan silinmiş olarak bulacaksınız.
Verilerin veritabanında uygun şekilde güncellendiğini kontrol etmek için MongoDB'de aşağıdaki komutları uygulamanız gerekir.
- EmployeeDB'yi kullanın
- db.Employee.find ()
İlk ifade EmployeeDb veritabanına bağlı olmanızı sağlar. İkinci ifade, çalışan koleksiyonundaki tüm kayıtları arar ve görüntüler. Burada kaydın silinip silinmediğini görebilirsiniz.
İçeriği depolamak ve sunmak için MongoDB ile bir node express uygulaması nasıl oluşturulur
Hem express hem de MongoDB'yi bir arada kullanarak bir uygulama oluşturmak günümüzde oldukça yaygındır.
JavaScript web tabanlı uygulamalarla çalışırken, normalde burada MEAN yığını terimi kullanılacaktır.
- MEAN yığını terimi, web uygulamaları geliştirmek için kullanılan JavaScript tabanlı teknolojilerin bir koleksiyonunu ifade eder.
- MEAN, MongoDB, ExpressJS, AngularJS ve Node.js'nin kısaltmasıdır.
Bu nedenle, Node.js ve MongoDB'nin arka uç veritabanları ile etkileşim kuran uygulamalar sunmak için nasıl birlikte çalıştığını anlamak her zaman iyidir.
"Ekspres" ve "MongoDB" yi birlikte nasıl kullanabileceğimize dair basit bir örneğe bakalım. Örneğimiz, MongoDB EmployeeDB veritabanındaki aynı Çalışan koleksiyonunu kullanacaktır.
Şimdi, kullanıcı tarafından talep edildiğinde verileri web sayfamızda görüntülemek için Express'i dahil edeceğiz. Uygulamamız Node.js üzerinde çalıştığında, http: // localhost: 3000 / Employeeid URL'sine göz atmak gerekebilir .
Sayfa başlatıldığında, Çalışan koleksiyonundaki tüm çalışan kimliği görüntülenecektir. Öyleyse, bunu başarmamızı sağlayacak bölümlerde kod parçacığını görelim.
Adım 1) Bizim durumumuzda hem MongoDB hem de ekspres kitaplık olan uygulamamızda kullanılması gereken tüm kitaplıkları tanımlayın.
Kod Açıklaması:
- Uygulamamızda kullanılacak 'express' kütüphanemizi tanımlıyoruz.
- Uygulamamızda MongoDB veri tabanımıza bağlanmak için kullanılacak olan 'ekspres' kitaplığımızı tanımlıyoruz.
- Burada bağlanmak için veritabanımızın URL'sini tanımlıyoruz.
- Son olarak, daha sonra tarayıcıda görüntülenmesi gereken çalışan kimliği koleksiyonumuzu saklamak için kullanılacak bir dize tanımlıyoruz.
Adım 2) Bu adımda, şimdi 'Çalışan' koleksiyonumuzdaki tüm kayıtları alıp ona göre çalışacağız.
Kod Açıklaması:
- 'Employeeid' adlı uygulamamıza bir rota oluşturuyoruz. Dolayısıyla, herhangi biri uygulamamızın http: // localhost: 3000 / Employeeid adresine göz attığında , bu rota için tanımlanan kod parçası çalıştırılacaktır.
- Burada 'Employee' koleksiyonumuzdaki tüm kayıtları db.collection ('Employee'). Find () komutu ile alıyoruz. Daha sonra bu koleksiyonu imleç adı verilen bir değişkene atıyoruz. Bu imleç değişkenini kullanarak, koleksiyonun tüm kayıtlarına göz atabileceğiz.
- Artık koleksiyonumuzun tüm kayıtlarında gezinmek için cursor.each () işlevini kullanıyoruz. Her kayıt için, her kayda erişildiğinde ne yapılacağına dair bir kod parçası tanımlayacağız.
- Son olarak, dönen kayıt boş değilse, çalışanı "item.Employeeid" komutu ile alıyoruz. Kodun geri kalanı, sonuçlarımızın tarayıcıda düzgün bir şekilde görüntülenmesini sağlayacak uygun bir HTML kodu oluşturmaktır.
Adım 3) Bu adımda çıktımızı web sayfasına göndereceğiz ve uygulamamızın belirli bir port üzerinden dinlemesini sağlayacağız.
Kod Açıklaması:
- Burada daha önceki adımda oluşturulan içeriğin tamamını web sayfamıza gönderiyoruz. 'Res' parametresi, web sayfamıza yanıt olarak içerik göndermemizi sağlar.
- Node.js uygulamamızın tamamını 3000 numaralı bağlantı noktasında dinletiyoruz.
Çıktı:
Çıktıdan
- Çalışan koleksiyonundaki tüm çalışan kimliklerinin alındığını açıkça gösteriyor. Bunun nedeni, veritabanına bağlanmak ve tüm Çalışan kayıtlarını almak için MongoDB sürücüsünü kullanmamız ve ardından kayıtları görüntülemek için "ekspres" kullanmamızdır.
İşte referans için kod
var express = require('express');var app = express();var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';var str = "";app.route('/Employeeid').get(function(req, res){MongoClient.connect(url, function(err, db) {var cursor = db.collection('Employee').find();//noinspection JSDeprecatedSymbolscursor.each(function(err, item) {if (item != null) {str = str + " Employee id " + item.Employeeid + "";}});res.send(str);db.close();});});var server = app.listen(3000, function() {});
Not: cursor.each, MongoDB sürücünüzün sürümüne bağlı olarak kullanımdan kaldırılabilir. Sorunu çözmek için // noinspection JSDeprecatedSymbols ekleyebilirsiniz. Alternatif olarak forEach'i kullanabilirsiniz. ForEach kullanan örnek kod aşağıdadır
var express = require('express');var app = express();var MongoClient = require('mongodb').MongoClient;var url = 'mongodb://localhost/EmployeeDB';var str = "";app.route('/Employeeid').get(function(req, res) {MongoClient.connect(url, function(err, db) {var collection = db.collection('Employee');var cursor = collection.find({});str = "";cursor.forEach(function(item) {if (item != null) {str = str + " Employee id " + item.Employeeid + "";}}, function(err) {res.send(err);db.close();});});});var server = app.listen(8080, function() {});
Özet
- Node.js, NoSQL veritabanları ile birlikte birçok modern gün web uygulaması oluşturmak için kullanılır. Kullanılan yaygın veri tabanlarından bazıları MySQL ve MongoDB'dir.
- MongoDB veri tabanlarıyla çalışmak için kullanılan yaygın modüllerden biri, 'MongoDB' adlı bir modüldür. Bu modül, Düğüm paket yöneticisi aracılığıyla yüklenir.
- MongoDB modülü ile bir koleksiyondaki kayıtları sorgulamak ve normal güncelleme, silme ve ekleme işlemlerini gerçekleştirmek mümkündür.
- Son olarak, modern uygulamalardan biri, günümüz uygulamalarını sunmak için MongoDB ile birlikte ekspres çerçeveyi kullanmaktır. Express çerçevesi, MongoDB sürücüsü tarafından döndürülen verileri kullanabilir ve verileri buna göre web sayfasında kullanıcıya gösterebilir.