All language subtitles for 004 Creating a Simple Tour Model_Downloadly.ir_en

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian Download
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:01,090 --> 00:00:03,130 So in the last lecture, we learned about 2 00:00:03,130 --> 00:00:06,010 Mongoose schemas and models, 3 00:00:06,010 --> 00:00:08,260 and so let's now implement a very simple 4 00:00:08,260 --> 00:00:11,173 schema and model for our application. 5 00:00:12,920 --> 00:00:14,990 And for now, let's do that right here 6 00:00:14,990 --> 00:00:17,330 in our server.js file. 7 00:00:17,330 --> 00:00:19,020 Later, of course, we're gonna move 8 00:00:19,020 --> 00:00:21,370 that into a different file. 9 00:00:21,370 --> 00:00:24,560 So, Mongoose is all about models, 10 00:00:24,560 --> 00:00:26,960 and a model is like a blueprint 11 00:00:26,960 --> 00:00:29,420 that we use to create documents. 12 00:00:29,420 --> 00:00:32,290 So it's a bit like classes in JavaScript, 13 00:00:32,290 --> 00:00:35,080 which we also kind of use as blueprints 14 00:00:35,080 --> 00:00:38,590 in order to create objects out of them, right? 15 00:00:38,590 --> 00:00:41,500 So again, we create a model in Mongoose 16 00:00:41,500 --> 00:00:44,000 in order to create documents using it, 17 00:00:44,000 --> 00:00:47,670 and also to query update and delete these documents. 18 00:00:47,670 --> 00:00:50,840 So basically, to perform each of the CRUD operation, 19 00:00:50,840 --> 00:00:53,420 so create, read, update, and delete, 20 00:00:53,420 --> 00:00:56,520 we need a Mongoose model, and in order to 21 00:00:56,520 --> 00:00:59,520 create a model, we actually need a schema. 22 00:00:59,520 --> 00:01:01,700 So, we actually create models out of 23 00:01:01,700 --> 00:01:03,820 Mongoose schema just like we learned 24 00:01:03,820 --> 00:01:06,490 in the last video, and we use the schema 25 00:01:06,490 --> 00:01:09,910 to describe our data, to set default values, 26 00:01:09,910 --> 00:01:13,660 to validate the data, and all kinds of stuff like that. 27 00:01:13,660 --> 00:01:15,620 So just as you will see right now, 28 00:01:15,620 --> 00:01:17,930 because now we're actually gonna start creating 29 00:01:17,930 --> 00:01:20,990 a very simple schema for our tours. 30 00:01:20,990 --> 00:01:24,980 So, let's say tourSchema 31 00:01:28,300 --> 00:01:32,363 is a new mongoose.Schema. 32 00:01:33,852 --> 00:01:36,752 Add that in here we actually pass our schema as an object. 33 00:01:37,590 --> 00:01:40,990 All right, we can then also pass in some options 34 00:01:40,990 --> 00:01:44,090 into the schema, but I'm leaving that to a future video 35 00:01:44,090 --> 00:01:46,640 where we actually need that feature. 36 00:01:46,640 --> 00:01:49,020 So, remember the tour documents that we used 37 00:01:49,020 --> 00:01:51,090 to create in the last section when 38 00:01:51,090 --> 00:01:53,190 we started exploring Mongoose DB? 39 00:01:53,190 --> 00:01:54,760 So we always gave them a name, 40 00:01:54,760 --> 00:01:57,100 a rating and a price, right, 41 00:01:57,100 --> 00:01:59,226 and so let's now replicate that here 42 00:01:59,226 --> 00:02:02,010 by saying name, and then describing 43 00:02:02,010 --> 00:02:04,717 what type of data we want after name, 44 00:02:04,717 --> 00:02:07,500 and we want it to be a string. 45 00:02:07,500 --> 00:02:09,770 So Mongoose actually uses the native 46 00:02:09,770 --> 00:02:13,280 JavaScript data types, and so here we can say string, 47 00:02:13,280 --> 00:02:16,980 or after rating we can say that we want a number 48 00:02:19,394 --> 00:02:22,163 and the same as the price. 49 00:02:23,340 --> 00:02:25,890 It should also be a number, right? 50 00:02:25,890 --> 00:02:30,320 So this is the most basic way of describing our data. 51 00:02:30,320 --> 00:02:33,130 So we have a name, a rating, and a price, 52 00:02:33,130 --> 00:02:34,913 and we specified the data type 53 00:02:34,913 --> 00:02:38,150 that we expect for each of these fields. 54 00:02:38,150 --> 00:02:40,340 So again, this is the most basic way 55 00:02:40,340 --> 00:02:43,100 of describing a schema, but we can take it 56 00:02:43,100 --> 00:02:45,650 one step further by defining something called 57 00:02:45,650 --> 00:02:48,360 schema type options for each field, 58 00:02:48,360 --> 00:02:50,600 or only for some specific field. 59 00:02:50,600 --> 00:02:52,640 So let's start here with the name, 60 00:02:52,640 --> 00:02:54,270 and instead of just specifying it 61 00:02:54,270 --> 00:02:58,490 as a string, let's actually pass in another object. 62 00:02:58,490 --> 00:03:01,340 And so now, we say that we want the type 63 00:03:01,340 --> 00:03:02,850 to be string but we can now 64 00:03:02,850 --> 00:03:05,640 define a couple more options, okay? 65 00:03:05,640 --> 00:03:10,640 For example, we can say that this field is required, 66 00:03:12,070 --> 00:03:13,060 and so we simply set 67 00:03:13,060 --> 00:03:17,110 the required property here to true, all right? 68 00:03:17,110 --> 00:03:20,970 So again, this object here are the schema type options, 69 00:03:20,970 --> 00:03:23,320 and they can be different for different types, 70 00:03:23,320 --> 00:03:25,640 for example the number type has some different 71 00:03:25,640 --> 00:03:28,250 schema options than the string here, 72 00:03:28,250 --> 00:03:30,770 but many of them are also similar. 73 00:03:30,770 --> 00:03:32,630 So for example, the required, we can use it 74 00:03:32,630 --> 00:03:35,403 on number as well, and so let's do that here. 75 00:03:39,750 --> 00:03:42,776 So the type, we still want it to be a number, 76 00:03:42,776 --> 00:03:47,460 and we also want it to be required, okay? 77 00:03:47,460 --> 00:03:49,460 Now, here in the required we can actually 78 00:03:49,460 --> 00:03:52,310 specify the error that we want to be displayed 79 00:03:52,310 --> 00:03:54,020 when we're missing this field. 80 00:03:54,020 --> 00:03:55,760 So, in order to do that we just have to 81 00:03:55,760 --> 00:03:59,300 pass in an array, and the first one is true. 82 00:03:59,300 --> 00:04:01,720 So the first element is true, and the second one 83 00:04:01,720 --> 00:04:03,820 is the error string. 84 00:04:03,820 --> 00:04:08,670 Let's say, a tour must have a name, 85 00:04:08,670 --> 00:04:10,270 and then here let's do the same. 86 00:04:15,459 --> 00:04:17,490 The tour must have a price, okay? 87 00:04:17,490 --> 00:04:19,697 Then we can also set default values 88 00:04:19,697 --> 00:04:22,720 and let's do that here for the rating. 89 00:04:22,720 --> 00:04:24,640 So again, I'm gonna specify some 90 00:04:24,640 --> 00:04:27,610 schema type options here, which is not mandatory, 91 00:04:27,610 --> 00:04:29,700 so it's enough to simply define 92 00:04:29,700 --> 00:04:32,210 the type here like we did, but if you want 93 00:04:32,210 --> 00:04:34,150 some more features, then we need to to at least 94 00:04:34,150 --> 00:04:37,033 specify the schema type options object. 95 00:04:38,080 --> 00:04:42,580 Okay, and then we need to specify the type again, 96 00:04:42,580 --> 00:04:47,480 which is number, and as a default, I want it to be 4.5. 97 00:04:48,350 --> 00:04:50,990 And so if we'd now create a new tour document 98 00:04:50,990 --> 00:04:54,270 using this schema and not specifying the rating, 99 00:04:54,270 --> 00:04:58,928 it would then automatically be set to 4.5, all right? 100 00:04:58,928 --> 00:05:02,100 And just to finish, let's try another one here, 101 00:05:02,100 --> 00:05:04,853 which is to say that the name should be unique. 102 00:05:05,910 --> 00:05:09,080 So, unique and set it to true, 103 00:05:09,080 --> 00:05:11,020 and so like this, we can now have two 104 00:05:11,020 --> 00:05:14,390 tour documents with the same name, all right? 105 00:05:14,390 --> 00:05:16,550 So, this is our very basic schema, 106 00:05:16,550 --> 00:05:18,370 let's now go ahead and actually 107 00:05:18,370 --> 00:05:21,230 create a model out of it, all right? 108 00:05:21,230 --> 00:05:22,380 And that's very simple, 109 00:05:24,890 --> 00:05:28,412 we simply create a variable called Tour, 110 00:05:28,412 --> 00:05:32,390 and then mongoose.model, 111 00:05:32,390 --> 00:05:36,380 then the name of the model, which is Tour with an uppercase 112 00:05:36,380 --> 00:05:37,780 T here, all right. 113 00:05:37,780 --> 00:05:39,930 And so that's just kind of a convention 114 00:05:39,930 --> 00:05:42,500 in programming to always use uppercase 115 00:05:42,500 --> 00:05:44,720 on model names and variables. 116 00:05:44,720 --> 00:05:47,040 So here it's the same, so I also created 117 00:05:47,040 --> 00:05:49,980 this tour variable here with a capital T 118 00:05:49,980 --> 00:05:52,630 just so we know that we're dealing with a model here. 119 00:05:53,750 --> 00:05:55,940 All right, so the name of the model 120 00:05:55,940 --> 00:06:00,940 and then the schema, and that's it. 121 00:06:01,310 --> 00:06:04,210 So just like this, we created a tour 122 00:06:04,210 --> 00:06:08,210 out of the schema that we created here in the beginning. 123 00:06:08,210 --> 00:06:10,150 All right, and so in the next video 124 00:06:10,150 --> 00:06:12,570 we're gonna then use this model here 125 00:06:12,570 --> 00:06:17,220 in order to create our very first tour document, all right? 126 00:06:17,220 --> 00:06:21,300 So just a recap here, we used new mongoose.Schema here 127 00:06:21,300 --> 00:06:24,525 to specify a schema for our data. 128 00:06:24,525 --> 00:06:27,870 So, basically describing it and also doing some validation. 129 00:06:27,870 --> 00:06:29,800 For example, this required here, 130 00:06:29,800 --> 00:06:32,580 this is actually something called a validator 131 00:06:32,580 --> 00:06:35,120 because it is used to validate our data. 132 00:06:35,120 --> 00:06:37,330 In this case, simply to validate 133 00:06:37,330 --> 00:06:39,390 if the name is actually there. 134 00:06:39,390 --> 00:06:41,757 And there are a lot of validators in Mongoose, 135 00:06:41,757 --> 00:06:44,200 and we can actually also create our own, 136 00:06:44,200 --> 00:06:46,400 and so of course we're gonna talk about that 137 00:06:46,400 --> 00:06:50,186 a bit later, again, once we actually need these features. 138 00:06:50,186 --> 00:06:52,600 Anyway, let's now quickly move on 139 00:06:52,600 --> 00:06:54,540 in order to finally start using 140 00:06:54,540 --> 00:06:56,113 the model that we just created. 10979

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.