Groceries Shopping App : Node JS

Veli Bacık
HardwareAndro
Published in
3 min readApr 12, 2020

Ve serinin son yazısına hoş geldiniz :)

Bir uygulama yazılır iken en önemli ve en değerli kısmı backend geliştirmemizdir.

Bizde bu projemiz için çok esnek bir şekilde kullanabileceğiniz ve temiz bir şekilde geliştirdiğimiz node app’imiz hazırladık.

Bu yazıyı güçlü olduğum taraf değil sadece gerçek hayatta nasıl bir ister olduğunu iyi biliyorum ve kendi öğrenmelerime göre geliştirdim.

Shoppi Tutorial for Backend

Uygulama İhtiyaç Planlaması:

  • İlk olarak ihtiyacımız bir ürün listesi servisidir.
  • Bu liste şuanki bir sayfalama mantığı olmadan direk “GET” isteği ile bize database’den ürünlerimizi getirmelidir.
  • Ürün listemize bir “POST” isteği ile ürün eklenmelidir.
  • Bu istekte gelen request’in body’si validate ile kontrol edilmelidir.
  • Ugulamanın real time yapısı için “Socket IO” kullandık.
  • Socket IO ile gelen anlık mesajları yani model değişiklerini db’de update edip clientlara güncellendi, haberini vermemiz gerekiyor.

Başlamadan önce:

  • Bora Kasmer’in bu konudaki makalelerine muhakkak incelemeyi unutmayın.
  • Yine buradaki yazıya da muhakak bakmalısınız.
  • Yine buradaki yazıyada bir göz atmalısınız.
  • Projede kullandığımız kütüphaneler : mongose, express, joi, http-status-codes, nodemon, ve mongodb

Kurulumları tamamladıktan sonra yapmanız gereken sırasıyla:

  • npm install
  • npm start (nodemon kurulu olduğu için hot reload sizinle birlikte olacaktır.)

Haydi başlayalım…

Project klasör yapısı:

  • Birçok yazı ve video okudum izledim, çok fazla dizayn var benim basitçe kullandığım yapı bu şekildedir.
  • Basitce modellerimi, controller ve util sınıflarımı ayırarak projemde kontrollü bir yapı elde ediyorum.

Projenin ana kontrol noktası: app.js

  • Nodejs projelerinin genelde başlangıç noktası app.js olmaktadır.
  • Burada uygulama başlarken ilk ayağa kaldıracağım adımları hazırladım
  • Mongo db’mizi ayağa kaldırıyor ve “product” adında bir model oluşturuyoruz.
  • Socket ile olan bağlantımızı yapıyoruz ve dinlemeye başlıyoruz.(İlk olarak socket ile denemelerim için chat örneğinide buraya bıraktım bir sonraki yazıda onuda flutter ile geliştireceğim 🥰)
  • Cors ayarlarını ve body parse ayarlarını entegre edip projemizin ilk kısmını tamamlıyoruz.

Sıra geldi ürün servisimize : product_controller.js

  • Routing mantığı nodejs tarafında oldukça dikkat edilmesi gereken bir konu olarak gözükmektedir.
  • Router ‘ımıza “GET” ve “POST” metodlarını tanımlayarak içerisine senaryolarımızı tanımlıyoruz.
  • Get metodumuzun içerisinde çok basit bir şekilde mongose db ile oluşturulan “Product” içinden elemanları çekiyoruz.
  • Post metodunda joi paketini kullanarak “validate” işlemi yapıyoruz ve hata gelir ise 406 döndürüyorum.
  • Eğer sorun yok ise yine mongoose ile oluşturduğum db’me ilgili modeli kayıt ediyorum.
  • Update product ise real time olarak gelen modeli db’de güncelleme işlemi yapıyor.

Son olarak model’imize geldi sıra : product.js

  • Buradaki model bizim client’lerimizde düşündüğümüz model yapısından biraz daha farklı.
  • Buradaki modelimiz aslında db’de oluşturucağımız bir tabloya karşılık gelmektedir.
  • Mongo DB local cihazımızında çalışıyor olmalıdır.
  • Bir property’imizi tanımlarken dikkat etmemiz gerekiyor. Required ve Unique gibi alanlar ile modelde o değeri benzersiz yapmayı ve muhakkak girilmesi gerektiğini sağlıyoruz.
  • Misalbu db’de iki tane title değeri “Veli” : “Veli” olan değer olamaz.

Vee backend’imiz hazır 🎊

Backend konusunda uzun zamandır çalışıyorum, ama ürün geliştirme konusunda yeniyim bizimkisi mobil uygulama geliştirirken sürekli dummy veya free api’leri kullanıyorduk. Şimdi kendi apimizi kendi istediğimiz şekilde yazdık.

Source: https://github.com/VB10/shoppii

Emeğin verdiği huzur dünyada hiçbir yerde tadılamayacak bir şey. Bir nebze bakış açabildiysem ne mutlu bana.
Sevgilerimle.

--

--

Veli Bacık
HardwareAndro

We always change the world, so just want it. [OLD]Google Developer Expert Flutter & Dart, Gamer, Work More!