﻿
{"id":8987,"date":"2018-08-06T13:49:47","date_gmt":"2018-08-06T13:49:47","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=8987"},"modified":"2018-08-06T13:49:47","modified_gmt":"2018-08-06T13:49:47","slug":"node-js-mongodbye-mongoose-ile-sema-olusturma-ve-kayit-ekleme","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/node-js-mongodbye-mongoose-ile-sema-olusturma-ve-kayit-ekleme\/","title":{"rendered":"Node.js &#8211; MongoDB&#8217;ye Mongoose \u0130le \u015eema Olu\u015fturma ve Kay\u0131t Ekleme"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bir \u00f6nceki <a href=\"http:\/\/www.gencayyildiz.com\/blog\/\" rel=\"noopener\" target=\"_blank\">Node.js \u2013 MongoDB\u2019ye Mongoose Mod\u00fcl\u00fc \u0130le Ba\u011flanma<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131mda Mongoose mod\u00fcl\u00fc arac\u0131l\u0131\u011f\u0131yla Node.js&#8217;de MongoDB&#8217;ye nas\u0131l ba\u011flan\u0131laca\u011f\u0131n\u0131 ele alm\u0131\u015ft\u0131k. Bu i\u00e7eri\u011fimizde ise yine Mongoose mod\u00fcl\u00fc \u00fczerinden veritaban\u0131m\u0131zda \u015fema olu\u015fturmay\u0131 ve olu\u015fturdu\u011fumuz \u015femaya kay\u0131t eklemeyi inceleyece\u011fiz.<\/p>\n<p>\u0130\u00e7eri\u011fimizde yapaca\u011f\u0131m\u0131z \u00f6rneklendirmeye e\u015flik etmesi i\u00e7in ilk olarak bir veritaban\u0131 olu\u015fturmam\u0131z gerekmektedir ve ben nacizane &#8220;CompanyDB&#8221; ismini tercih etti\u011fim bir veritaban\u0131 olu\u015fturuyorum.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDBye-Mongoose-\u0130le-\u015eema-Olu\u015fturma-ve-Kay\u0131t-Ekleme.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDBye-Mongoose-\u0130le-\u015eema-Olu\u015fturma-ve-Kay\u0131t-Ekleme.png\" alt=\"Node.js - MongoDB&#039;ye Mongoose \u0130le \u015eema Olu\u015fturma ve Kay\u0131t Ekleme\" width=\"310\" height=\"95\" class=\"aligncenter size-full wp-image-8991\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDBye-Mongoose-\u0130le-\u015eema-Olu\u015fturma-ve-Kay\u0131t-Ekleme.png 310w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDBye-Mongoose-\u0130le-\u015eema-Olu\u015fturma-ve-Kay\u0131t-Ekleme-300x92.png 300w\" sizes=\"auto, (max-width: 310px) 100vw, 310px\" \/><\/a><br \/>\nOlu\u015fturulan veritaban\u0131na g\u00f6z atarsan\u0131z e\u011fer i\u00e7erisinde kendisiyle ayn\u0131 isimde bulunan bir collection d\u0131\u015f\u0131nda ba\u015fka bir collection bulunmamaktad\u0131r. Bizler bu makalede ele alaca\u011f\u0131m\u0131z y\u00f6ntemle Node.js ile programatik olarak kendi collectionlar\u0131m\u0131z\u0131 direkt olarak olu\u015fturacak ve bu collectionlara veriler ekleyece\u011fiz.<\/p>\n<h3>Ad\u0131m 1<\/h3>\n<p><strong>Model Olu\u015fturma<\/strong><br \/>\nProjemizdeki modelleri ben genellikle projenin ana dizininde &#8220;models&#8221; isimli klas\u00f6rde tutmay\u0131 tercih ediyorum. &#8220;Models&#8221; klas\u00f6r\u00fc alt\u0131na yine ismini nacizane belirledi\u011fim &#8220;employee.js&#8221; ad\u0131nda bir model dosyas\u0131 olu\u015fturuyorum.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst mongoose = require(&quot;mongoose&quot;);\r\n\r\nmodule.exports = mongoose.model(&quot;Employees&quot;, new mongoose.Schem a({\r\n    name: String,\r\n    surName: String,\r\n    age: Number,\r\n    married: Boolean\r\n}));\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz e\u011fer bir modelin nas\u0131l olu\u015fturuldu\u011funu g\u00f6rmektesiniz. Dikkat ederseniz require edilen Mongoose mod\u00fcl\u00fc \u00fczerinden &#8220;model&#8221; fonksiyonu geriye exports edilmektedir. Fonksiyonun ilk parametresi bu modelin veritaban\u0131nda hangi collectiona ait oldu\u011fu bilgisini tutmaktad\u0131r. \u0130kinci parametre ise Mongoose mod\u00fcl\u00fcnde bulunan Schema s\u0131n\u0131f\u0131nda bir nesne almaktad\u0131r. Haliyle g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere Schema nesnesi i\u00e7erisinde ilgili modelimiz tan\u0131mlam\u0131\u015f bulunmaktad\u0131r. Bir ba\u015fka deyi\u015fle modelimizin alanlar\u0131 veri tipleriyle birlikte tan\u0131mlanm\u0131\u015ft\u0131r.<\/p>\n<p>Bizler makalemizin ba\u015flar\u0131nda &#8220;CompanyDB&#8221; isminde bo\u015f bir veritaban\u0131 olu\u015fturmu\u015ftuk. Dolay\u0131s\u0131yla i\u00e7erisinde &#8220;Employees&#8221; isminde bir collection olmad\u0131\u011f\u0131n\u0131 biliyoruz. Yukar\u0131da olu\u015fturmu\u015f oldu\u011fumuz modeli birazdan gidip veritaban\u0131na ilgili isimde bir collection\u0131 manuel olarak tan\u0131mlamaya gerek kalmaks\u0131z\u0131n ekleyebilece\u011fiz ve bu i\u015flem neticesinde &#8220;Employees&#8221; collection\u0131 otomatik eklenmi\u015f olacakt\u0131r. Bu i\u015flemi Mongoose mod\u00fcl\u00fc MongoDB ile olan derin uyumlulu\u011fundan otomatik olarak ger\u00e7ekle\u015ftirecektir.<\/p>\n<p>Yukar\u0131da yapm\u0131\u015f oldu\u011fumuz model tan\u0131mlamas\u0131n\u0131 a\u015fa\u011f\u0131daki gibide yapabilece\u011fimizi bilmenizi isterim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst mongoose = require(&quot;mongoose&quot;);\r\n\r\nconst model = new mongoose.Schem a({\r\n    name: String,\r\n    surName: String,\r\n    age: Number,\r\n    married: Boolean\r\n});\r\n\r\nmodule.exports = mongoose.model(&quot;Employees&quot;, model);\r\n<\/pre>\n<p>Bu farkl\u0131 varyasyon tan\u0131mlamas\u0131ndan sonra ikinci ad\u0131ma ge\u00e7ebiliriz.<\/p>\n<h3>Ad\u0131m 2<\/h3>\n<p><strong>Modeli Kullanarak Instance Olu\u015fturma ve Veritaban\u0131na Kay\u0131t Etme<\/strong><br \/>\n\u015eimdi tan\u0131mlad\u0131\u011f\u0131m\u0131z\u0131 modeli kullanarak bir instance olu\u015fturaca\u011f\u0131z ve bu instance&#8217;\u0131 veritaban\u0131na g\u00f6nderip kay\u0131t i\u015flemini ger\u00e7ekle\u015ftirece\u011fiz. Tabi bu i\u015flemi route s\u0131n\u0131flar\u0131m\u0131zdan herhangi birinde ger\u00e7ekle\u015ftirece\u011fiz. Tabi route yap\u0131lanmalar\u0131n\u0131 ayr\u0131 s\u0131n\u0131flarda olu\u015fturduysan\u0131z&#8230; Makalemizde route yap\u0131lanmalar\u0131n\u0131 ayr\u0131 s\u0131n\u0131flara alarak i\u00e7eri\u011fi yersiz \u015fi\u015firmek istemedi\u011fimden dolay\u0131 t\u00fcm i\u015flemi ana mod\u00fcl\u00fcm\u00fczde ger\u00e7ekle\u015ftirece\u011fim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nconst express = require(&quot;express&quot;);\r\nconst app = express();\r\nconst mongoose = require(&quot;mongoose&quot;);\r\n\r\n\/\/*  Veritaban\u0131 Ba\u011flant\u0131s\u0131 Kuruluyor  *\/\r\nmongoose.connect(&quot;mongodb:\/\/localhost\/CompanyDB&quot;)\r\n    .then(() =&gt; console.log(&quot;Veritaban\u0131 ba\u011flant\u0131s\u0131 ba\u015far\u0131yla sa\u011fland\u0131.&quot;))\r\n    .catch((error) =&gt; console.log(&quot;Veritaban\u0131 ba\u011flant\u0131s\u0131 sa\u011flan\u0131rken beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131.&quot;, error.message));\r\n\/\/\r\n\r\n\/\/* Mod\u00fcl Require Ediliyor *\/\r\nconst Employee = require(&quot;.\/models\/employee&quot;);\r\n\/\/\r\n\r\napp.get(&quot;\/&quot;, (request, response, next) =&gt; {\r\n\r\n    \/\/* Instance Olu\u015fturuluyor *\/\r\n    const instance1 = new Employee({\r\n        name: &quot;Gen\u00e7ay&quot;,\r\n        surName: &quot;Y\u0131ld\u0131z&quot;,\r\n        age: 26,\r\n        married: true\r\n    });\r\n    \/\/\r\n\r\n    \/\/* Instance Veritaban\u0131na G\u00f6nderiliyor *\/\r\n    instance1.save((error, data) =&gt; {\r\n        if (error)\r\n            console.log(&quot;Beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131.&quot;, error.message);\r\n\r\n        response.json(data);\r\n    });\r\n    \/\/\r\n}).listen(5000);\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz e\u011fer &#8220;employee&#8221; mod\u00fcl\u00fcm\u00fcz\u00fc require ediyoruz ve ard\u0131ndan route i\u00e7erisinde ilgili mod\u00fclden bir instance olu\u015fturuyoruz. T\u00fcm alanlara uygun de\u011ferleri girdikten sonra instance \u00fczerinden &#8220;save&#8221; fonksiyonu ile ilgili nesne veritaban\u0131na g\u00f6nderilmektedir ve ard\u0131ndan json olarak sayfaya response edilmektedir.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDBye-Mongoose-\u0130le-\u015eema-Olu\u015fturma-ve-Kay\u0131t-Ekleme-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDBye-Mongoose-\u0130le-\u015eema-Olu\u015fturma-ve-Kay\u0131t-Ekleme-1.png\" alt=\"Node.js - MongoDB&#039;ye Mongoose \u0130le \u015eema Olu\u015fturma ve Kay\u0131t Ekleme\" width=\"374\" height=\"213\" class=\"aligncenter size-full wp-image-9007\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDBye-Mongoose-\u0130le-\u015eema-Olu\u015fturma-ve-Kay\u0131t-Ekleme-1.png 374w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDBye-Mongoose-\u0130le-\u015eema-Olu\u015fturma-ve-Kay\u0131t-Ekleme-1-300x171.png 300w\" sizes=\"auto, (max-width: 374px) 100vw, 374px\" \/><\/a><br \/>\nSayfaya bas\u0131lan json de\u011fer bizi yukar\u0131daki gibi kar\u015f\u0131lamaktad\u0131r. Haz\u0131r akl\u0131m\u0131zdayken veritaban\u0131m\u0131zada g\u00f6z atarsak e\u011fer;<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDBye-Mongoose-\u0130le-\u015eema-Olu\u015fturma-ve-Kay\u0131t-Ekleme-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDBye-Mongoose-\u0130le-\u015eema-Olu\u015fturma-ve-Kay\u0131t-Ekleme-2.png\" alt=\"Node.js - MongoDB&#039;ye Mongoose \u0130le \u015eema Olu\u015fturma ve Kay\u0131t Ekleme\" width=\"734\" height=\"229\" class=\"aligncenter size-full wp-image-9009\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDBye-Mongoose-\u0130le-\u015eema-Olu\u015fturma-ve-Kay\u0131t-Ekleme-2.png 734w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/08\/Node.js-MongoDBye-Mongoose-\u0130le-\u015eema-Olu\u015fturma-ve-Kay\u0131t-Ekleme-2-300x94.png 300w\" sizes=\"auto, (max-width: 734px) 100vw, 734px\" \/><\/a><br \/>\nG\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere &#8220;employees&#8221; collection&#8217;\u0131 hi\u00e7 elimizi s\u00fcrmedi\u011fimiz halde otomatik olu\u015fturulmu\u015ftur ve verimiz(document) i\u00e7erisine eklenmi\u015ftir.<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bir \u00f6nceki Node.js \u2013 MongoDB\u2019ye Mongoose Mod\u00fcl\u00fc \u0130le Ba\u011flanma ba\u015fl\u0131kl\u0131 yaz\u0131mda Mongoose mod\u00fcl\u00fc arac\u0131l\u0131\u011f\u0131yla Node.js&#8217;de MongoDB&#8217;ye nas\u0131l ba\u011flan\u0131laca\u011f\u0131n\u0131 ele alm\u0131\u015ft\u0131k. Bu i\u00e7eri\u011fimizde ise yine Mongoose mod\u00fcl\u00fc \u00fczerinden veritaban\u0131m\u0131zda \u015fema olu\u015fturmay\u0131 ve olu\u015fturdu\u011fumuz \u015femaya&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":8971,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2539,2145,2538],"tags":[2534,2540,2541,2542,2147],"class_list":["post-8987","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mongodb","category-node-js","category-nosql","tag-mongodb","tag-mongoose","tag-mongoose-create-schema","tag-mongoose-insert-data","tag-node-js"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/8987","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=8987"}],"version-history":[{"count":23,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/8987\/revisions"}],"predecessor-version":[{"id":9013,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/8987\/revisions\/9013"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/8971"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=8987"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=8987"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=8987"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}