Mongoose findOneAndUpdate kullanarak bir belge güncellendiğinde geriye kayıtın eski hali dönüyor. Eğer belgenin yeni halinin geri dönmesi isteniyorsa bunun bildirilmesi gereklidir.
Normal bir findOneAndUpdate işlemini şu şekilde yapıyoruz.
Model.findOneAndUpdate({
sorgu,
guncelleme,
secenekler
})
Burada
- sorgu arama kriterlerini belirten bölümdür.
- guncelleme kriterlere uyan kayıt üzerinde yapılacak değişikliklerdir.
- secenekler ise bu işlem için kullanılan ek parametrelerdir.
Mesela üye kayıtları içerisinden üye eposta değerine göre bir üye aratıp, sonrasında onun yaşını değiştirmek istersek.
Önce üye bilgilerinin şöyle olduğunu varsayalım.
{
isim: "Ahmet Koşar",
email: "ahmetkosar@uyemail.com",
yas: 23
}
Ve üye yaşını değiştirmek isteyelim.
const uye = Uye.findOneAndUpdate({
email: "ahmetkosar@uyemail.com"
}, {
yas: 29,
}
});
Böyle bir işlem yapıldığında uye değişkenine güncelleme yapılmadan önceki üye bilgileri atanır.
Şuan uye değişkeninin değeri
{
isim: "Ahmet Koşar",
email: "ahmetkosar@uyemail.com",
yas: 23
}
şeklindedir. Yani eski halinde. Peki biz eski değeri değilde güncellenen değeri almak istiyorsak. O zaman parametre olarak new: true değerini girmemiz gerekiyor.
Aynı işlemi tekrardan yapalım.
Önce üye bilgilerinin şöyle olduğunu varsayalım.
{
isim: "Ahmet Koşar",
email: "ahmetkosar@uyemail.com",
yas: 23
}
Ve üye yaşını değiştirmek isteyelim.
const uye = Uye.findOneAndUpdate({
email: "ahmetkosar@uyemail.com"
}, {
yas: 29,
},
{
new: true
}
});
Şuan uye değişkeninin değeri
{
isim: "Ahmet Koşar",
email: "ahmetkosar@uyemail.com",
yas: 29
}
şeklinde olacaktır.
Sonuç
Mongoose findOneAndUpdate metodu kullanıldığında, geriye eski kayıt döner, eğer güncellenen değerin geri dönderilmesi istenirse new: true parametresinin verilmesi gerekir.
Sizin de eklemek istediğiniz bu tip incelikleri yorumlardan bizimle paylaşabilirsiniz.
