giriiş
MongoDB en popüler NoSQL veritabanıdır; MongoDB, verileri koleksiyonlarda depolar. Koleksiyondaki bireysel kayıtlara belge denir ve JSON verilerine benzer bir anahtar-değer yapısına sahiptir. MongoDB, performansı, esnekliği ve ölçeklenebilirlik özellikleriyle tercih edilir.
Mangusta nedir?
Mongoose, Node.js çerçevesi için söz tabanlı bir nesne veri modelleme (ODM) kütüphanesidir. Mongoose, MongoDB veritabanıyla etkileşim kurma şeklinizi basitleştirir. MongoDB şemaları oluşturmanıza ve modellemenize olanak tanır. Bu sayede karmaşık veritabanı sorguları/şemaları yazmak zorunda kalmazsınız. Mongoose, MongoDB'de depolamak istediğiniz verileri modellemenize olanak tanır.
Bu kılavuz, Mongoose kullanarak MongoDB'yi Node.js'e nasıl bağlayacağınızı anlamanıza yardımcı olacaktır.
Ön koşul:
Bu kılavuzu takip etmek için bilgisayarınızda Node.js yüklü olduğundan emin olun. MongoDB bilgisayarınıza kurulu olmalı veya bir MongoDB Atlas bulut hesabına kurulmalıdır. Node.js sunucuları oluşturma hakkında temel bilgiler. Postman yüklü olmalıdır. Node.js Mongoose projesi oluşturma Bir Node.js projesi oluşturmak için istediğiniz klasöre gidin ve npm init -y komutunu çalıştırın. Ardından aşağıdaki paketleri yükleyin: Express — bir Node.js HTTP sunucusu oluşturmak için. Mongoose — Node.js'de MongoDB için bir ODM.
npm install mongoose --save
Node.js'de Mongoose ve MongoDB ile İletişim Kurma Mongoose kullanarak Mongoose ile iletişim kurmak için db.js adında bir dosya oluşturun ve Mongoose bağlantısını aşağıdaki gibi yapılandırın:
Mongoose kütüphanesini içe aktarın:
const connectDB = async () => {
try {
const conn = await mongoose.connect(`mongodb://localhost:27017/test`, {
useNewUrlParser: true,
});
console.log(`MongoDB Connected: {conn.connection.host}`);
} catch (error) {
console.error(error.message);
process.exit(1);
}
}Burada kullanılan MongoDB yerel olarak çalışıyor. Dolayısıyla Mongoose, veritabanınızın adının bulunduğu bir bağlantı oluşturuyor. Yerel MongoDB kurulumunuza veya MongoDB Atlas cloud.mongodb://localhost:27017test adresine bağlanan doğru URI'yi girdiğinizden emin olun.
Son olarak connectDB fonksiyonunu dışarı aktaralım:
module.exports = connectDB;db.js dosyasını belirtin ve içe aktarın:
const express = require('express');
const connectDB = require('./db'); Express ara yazılımını ve ayrıştırıcısını ekleyin:
// express
const app = express();
//body parser
app.use(express.json());connectDB() fonksiyonunu çalıştırın:
//connect to database
connectDB();Sunucu kökünü ekle:
// routes
// We will add these routes later in this guide.Programı localhost portunda çalıştırın:
onst PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Server running on port {PORT}`));Mongoose kullanarak bir Şema modelleyin
Bir model, bir MongoDB veritabanında bir koleksiyon şeması tanımlar. Aşağıdaki gibi bir model.js dosyası ve bir Mongoose koleksiyon şeması oluşturun:
const {
Schema,
model
} = require("mongoose");
const MySchema = new Schema({
name: {
type: String,
required: true,
maxlength: 50
},
createdAt: {
type: Date,
default: Date.now,
},
});
const TaskModel = model("test", MySchema)
module.exports = TaskModelBurada, mongoose.Schema metodunu çalıştıran bir MySchema fonksiyonu oluşturuyoruz. Bu metot, Mongoose'un MongoDB üzerinde çalıştırdığı şemayı oluşturur. Şemayı oluşturmak için dosyaları belgenize ekleyin. Bu örnekte iki alan ekliyoruz:
Bir ad – Yukarıdaki kodda, bu alan maksimum elli karakter uzunluğunda bir dize olarak oluşturulmuştur. Required değeri true olarak ayarlandığında, her belgenin bu alanı içermesi gerektiği belirtilir.
createAt alanı — belgenin oluşturulduğu saati belirtir. Oluşturulma tarihi türü olarak varsayılan olarak geçerli tarih kullanılır.
Mongoose şemasını kullanarak veritabanına veri ekleyin:
Veritabanına veri eklemek için controller.js dosyası oluşturun.
Model dosyasından MySchema'yı içe aktar const Task = require('./model');
Görev kümesine bir görev ekleyin. Bu, POST yolunu belirtir.
exports.createTask = async (req, res) => {
try {
// get the task from the body
const taskData = await req.body;
//create a new task then save
await Task.create(taskData)
.then((createdTask) => {
if (!createdTask) return res.status(404)
.json({
success: false,
message: "Task creation failed",
error: "Unable get created task"
})
res.status(201)
.json({
success: true,
createdTask
})
})
.catch((error) => {
res.status(404)
.json({
success: false,
error: error.message
})
})
} catch (error) {
res.status(500)
.json({
success: false,
message: "Internal server error"
})
}
}Tüm görevleri kurtarın:
Bu kodu controller.js dosyasına ekleyin. Bu, GET rotasını belirtir.
exports.createTask = async (req, res) => {
try {
// get the task from the body
const taskData = await req.body;
//create a new task then save
await Task.create(taskData)
.then((createdTask) => {
if (!createdTask) return res.status(404)
.json({
success: false,
message: "Task creation failed",
error: "Unable get created task"
})
res.status(201)
.json({
success: true,
createdTask
})
})
.catch((error) => {
res.status(404)
.json({
success: false,
error: error.message
})
})
} catch (error) {
res.status(500)
.json({
success: false,
message: "Internal server error"
})
}
}
exports.getTasks = async (req, res) => {
//get all the data in the model and return it as response
try {
Task.find()
.then((allTasks) => {
res.status(200)
.json({
success: true,
allTasks
})
})
.catch((error) => {
res.status(404)
.json({
success: false,
message: "Cant fined ",
error
})
})
} catch (error) {
res.status(500)
.json({
success: false,
message: "Internal server error",
error: error.message
})
}
}Rota oluştur:
Yukarıdaki denetleyicileri çalıştırmak için bir rota oluşturun. Yeni bir dosya oluşturun ve adına routes.js adını verin. Ardından aşağıdaki kodu ekleyin:
const router = require("express")
.Router()
const controller = require('./controller')
router
.post('/', controller.createTask)
.get('/', controller.getTasks)
module.exports = routerSon olarak bu route'ları server.js dosyasının içerisinde çalıştırın.
const router = require('./routes')
app.use('/tasks', router)Yeni bir görev eklemek için Postman'ı kullanarak aşağıdaki gibi bir POST isteği gönderin:
Eklenen görevleri almak için Postman'ı kullanarak aşağıdaki gibi bir GET isteği gönderin:
Eklenen görevleri MongoDB veritabanınıza erişerek görebilirsiniz:












