All language subtitles for 010 Populating Reviews_Downloadly.ir_en

af Afrikaans
ak Akan
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bem Bemba
bn Bengali
bh Bihari
bs Bosnian
br Breton
bg Bulgarian
km Cambodian
ca Catalan
ceb Cebuano
chr Cherokee
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
ee Ewe
fo Faroese
tl Filipino
fi Finnish
fr French
fy Frisian
gaa Ga
gl Galician
ka Georgian
de German
el Greek
gn Guarani
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ia Interlingua
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
rw Kinyarwanda
rn Kirundi
kg Kongo
ko Korean
kri Krio (Sierra Leone)
ku Kurdish
ckb Kurdish (Soranî)
ky Kyrgyz
lo Laothian
la Latin
lv Latvian
ln Lingala
lt Lithuanian
loz Lozi
lg Luganda
ach Luo
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mfe Mauritian Creole
mo Moldavian
mn Mongolian
my Myanmar (Burmese)
sr-ME Montenegrin
ne Nepali
pcm Nigerian Pidgin
nso Northern Sotho
no Norwegian
nn Norwegian (Nynorsk)
oc Occitan
or Oriya
om Oromo
ps Pashto
fa Persian Download
pl Polish
pt-BR Portuguese (Brazil)
pt Portuguese (Portugal)
pa Punjabi
qu Quechua
ro Romanian
rm Romansh
nyn Runyakitara
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
sh Serbo-Croatian
st Sesotho
tn Setswana
crs Seychellois Creole
sn Shona
sd Sindhi
si Sinhalese
sk Slovak
sl Slovenian
so Somali
es Spanish
es-419 Spanish (Latin American)
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
tt Tatar
te Telugu
th Thai
ti Tigrinya
to Tonga
lua Tshiluba
tum Tumbuka
tr Turkish
tk Turkmen
tw Twi
ug Uighur
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
wo Wolof
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:01,100 --> 00:00:03,700 Let's now populate the reviews 2 00:00:03,700 --> 00:00:06,503 with both the user and the tour data. 3 00:00:08,360 --> 00:00:11,470 So just like the did on the tour, let's now make is so 4 00:00:11,470 --> 00:00:14,910 that both the tour and the user will be automatically 5 00:00:14,910 --> 00:00:19,330 populated each time there is a query for a review. 6 00:00:19,330 --> 00:00:22,110 Since we already did that before, I will now 7 00:00:22,110 --> 00:00:25,140 give you yet another challenge, okay. 8 00:00:25,140 --> 00:00:27,140 So I want you to go ahead and do it 9 00:00:27,140 --> 00:00:31,060 just like we did in the tours, but now for the reviews. 10 00:00:31,060 --> 00:00:32,850 Just a hint that I need to give you 11 00:00:32,850 --> 00:00:35,140 before you can do this on your own, 12 00:00:35,140 --> 00:00:37,490 is that when you want to populate two fields, 13 00:00:37,490 --> 00:00:40,140 you need to actually call populate twice. 14 00:00:40,140 --> 00:00:43,430 So once for each of the fields, all right. 15 00:00:43,430 --> 00:00:45,740 With that information, you should be good to go 16 00:00:45,740 --> 00:00:48,763 to pause the video now and go and try it. 17 00:00:52,780 --> 00:00:55,023 So I hope that wasn't too hard. 18 00:00:56,070 --> 00:00:59,583 Let's go ahead and just close some files here, 19 00:01:00,850 --> 00:01:04,319 so everything that's not related to reviews, 20 00:01:04,319 --> 00:01:05,603 we don't need anymore. 21 00:01:06,740 --> 00:01:10,440 So let's just go to the review model and then 22 00:01:10,440 --> 00:01:12,823 implement, or pre-find middleware. 23 00:01:14,900 --> 00:01:18,120 So we do that on the schema, as you already know, 24 00:01:18,120 --> 00:01:21,870 and then again we use a regular expression 25 00:01:21,870 --> 00:01:25,883 to basically match strings, which start with find. 26 00:01:27,170 --> 00:01:30,100 So again, this is going to work for find, 27 00:01:30,100 --> 00:01:34,160 for find one, and all the other find one methods 28 00:01:34,160 --> 00:01:35,710 that are available in Mongoose. 29 00:01:40,960 --> 00:01:44,340 As always, I start by writing next. 30 00:01:44,340 --> 00:01:46,180 And now really all we need to do 31 00:01:46,180 --> 00:01:51,123 is to call populate on the current query, so this.populate, 32 00:01:53,200 --> 00:01:56,460 and I will now actually specify the options object 33 00:01:56,460 --> 00:01:59,550 because I only want to select a couple of fields 34 00:01:59,550 --> 00:02:02,573 and not the entire tour, and also not the entire user. 35 00:02:03,790 --> 00:02:07,540 So remember, we start with the path property, 36 00:02:07,540 --> 00:02:10,053 and this one is going to be for tour. 37 00:02:11,140 --> 00:02:15,280 So again, by specifying tour here, means that 38 00:02:15,280 --> 00:02:17,750 this field here, which has the exact some name, 39 00:02:17,750 --> 00:02:20,230 is then going to be the one that's populated 40 00:02:20,230 --> 00:02:21,860 based on a tour model. 41 00:02:21,860 --> 00:02:25,580 Well, because that's what we specified here, okay. 42 00:02:25,580 --> 00:02:28,530 So the reference is to a model called tour, 43 00:02:28,530 --> 00:02:31,680 and basically it's in that collection where Mongoose is then 44 00:02:31,680 --> 00:02:35,533 going to look for documents with the ID that we specified. 45 00:02:36,640 --> 00:02:41,290 All right, so we want a tour, but then 46 00:02:42,360 --> 00:02:45,070 let's say that we actually only want 47 00:02:45,070 --> 00:02:46,823 the tour name and nothing else. 48 00:02:47,830 --> 00:02:52,140 So select, okay, and then just the name, 49 00:02:52,140 --> 00:02:55,680 and then as I said, if we want to populate multiple fields, 50 00:02:55,680 --> 00:02:58,453 well all we need to do is to call populate again. 51 00:03:00,370 --> 00:03:03,950 So at this point the query is populated with the tours, 52 00:03:03,950 --> 00:03:05,650 and now we need to populate it again, 53 00:03:05,650 --> 00:03:07,123 this time with the user. 54 00:03:13,130 --> 00:03:15,110 And now select, and that's actually 55 00:03:15,110 --> 00:03:19,690 only display the user name and the photo, 56 00:03:19,690 --> 00:03:22,510 and not for example, stuff like the email. 57 00:03:22,510 --> 00:03:23,800 So let's say that someone hits 58 00:03:23,800 --> 00:03:26,140 the API to get all the reviews, 59 00:03:26,140 --> 00:03:28,720 but then we don't want to leak all the details 60 00:03:28,720 --> 00:03:32,200 about the users posting these reviews to the client. 61 00:03:32,200 --> 00:03:35,550 So no one should really be able to know the private data 62 00:03:35,550 --> 00:03:39,310 about the reviewers, like emails, okay. 63 00:03:39,310 --> 00:03:44,060 So again, we only leak, we only send relevant data about the 64 00:03:44,060 --> 00:03:48,720 user, and in this case, it's the name and the photo, okay. 65 00:03:48,720 --> 00:03:51,920 So give this a save, and if we now 66 00:03:51,920 --> 00:03:54,360 hit or get all reviews endpoint, 67 00:03:54,360 --> 00:03:58,070 well then already the tour and the user should be populated 68 00:03:58,070 --> 00:04:00,323 instead of us just seeing the IDs there. 69 00:04:01,320 --> 00:04:04,240 Let's try that, and here we go. 70 00:04:04,240 --> 00:04:07,260 So that's working, we get the name, 71 00:04:07,260 --> 00:04:11,890 and of course also the ID, and then the same for the user. 72 00:04:11,890 --> 00:04:14,783 So we get the name, but then not the photo. 73 00:04:15,780 --> 00:04:19,170 So let's see, maybe I didn't get, specify 74 00:04:19,170 --> 00:04:22,160 the photo property, so let's take a look at that. 75 00:04:22,160 --> 00:04:26,190 So the userModel, but actually it is there. 76 00:04:26,190 --> 00:04:29,900 No, I'm sorry, of course we do not see the photo 77 00:04:29,900 --> 00:04:33,463 because we never specified any photo for any of our users. 78 00:04:34,470 --> 00:04:38,230 Okay, and therefore the only property that actually exists 79 00:04:38,230 --> 00:04:41,550 is the name, and so that's what we then get. 80 00:04:41,550 --> 00:04:44,520 Okay, and that's actually it. 81 00:04:44,520 --> 00:04:47,550 So really simple, that's all we need to do 82 00:04:47,550 --> 00:04:49,020 to get all the related data, 83 00:04:49,020 --> 00:04:52,280 and just as we specified in our data model. 84 00:04:52,280 --> 00:04:53,900 Now again, just keep in mind 85 00:04:53,900 --> 00:04:56,690 that this one is going to add some extra queries, 86 00:04:56,690 --> 00:04:59,110 and in this case, it's actually two queries, 87 00:04:59,110 --> 00:05:01,410 because behind the scenes, Mongoose will actually 88 00:05:01,410 --> 00:05:05,200 have to query both the tours and also the users 89 00:05:05,200 --> 00:05:08,690 in order to find the matching document, okay. 90 00:05:08,690 --> 00:05:09,670 So this should then probably 91 00:05:09,670 --> 00:05:12,230 add some time here to the query. 92 00:05:12,230 --> 00:05:16,340 So it took 266 milliseconds, like this. 93 00:05:16,340 --> 00:05:19,700 Let's just, for the sake of experiment, 94 00:05:19,700 --> 00:05:22,593 comment out this code, and then try it again. 95 00:05:24,800 --> 00:05:28,340 And this is taking a lot of time, I'm not sure why. 96 00:05:28,340 --> 00:05:32,423 So let's do it again, and so you see, 157 milliseconds, 97 00:05:33,280 --> 00:05:37,033 and if we now put it back, let's do it again. 98 00:05:39,080 --> 00:05:40,560 And again, it takes a lot of time, 99 00:05:40,560 --> 00:05:42,750 and so again, I'm doing it twice. 100 00:05:42,750 --> 00:05:45,900 But still you see that it took a little bit longer, okay. 101 00:05:45,900 --> 00:05:47,570 So not the end of the world, 102 00:05:47,570 --> 00:05:50,450 it was just like 100 milliseconds more, 103 00:05:50,450 --> 00:05:52,330 but when you reach a certain scale, 104 00:05:52,330 --> 00:05:54,410 that might make a difference. 105 00:05:54,410 --> 00:05:57,580 So again, I just want you to keep that in mind. 106 00:05:57,580 --> 00:06:01,113 Anyway, that's it for this lecture, so let's now move on. 8654

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