All language subtitles for 025 Query Middleware_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,110 --> 00:00:03,330 In this video, we're gonna talk about 2 00:00:03,330 --> 00:00:06,180 the second type of Mongoose middleware, 3 00:00:06,180 --> 00:00:08,132 which is query middleware. 4 00:00:09,690 --> 00:00:12,169 And, as the name says, query middleware 5 00:00:12,169 --> 00:00:15,720 allows us to run functions before or after 6 00:00:15,720 --> 00:00:18,360 a certain query is executed. 7 00:00:18,360 --> 00:00:21,020 And so let's now add a pre-find hook, 8 00:00:21,020 --> 00:00:23,730 so basically, a middleware that is gonna run 9 00:00:23,730 --> 00:00:26,493 before any find query is executed. 10 00:00:29,780 --> 00:00:31,740 So let's add another comment here. 11 00:00:31,740 --> 00:00:35,283 So this is query middleware. 12 00:00:36,270 --> 00:00:38,760 And of course, it works in a very similar way 13 00:00:38,760 --> 00:00:39,763 as before. 14 00:00:41,320 --> 00:00:43,950 So the tourSchema, and then pre, 15 00:00:43,950 --> 00:00:46,280 and in here we define the hook, 16 00:00:46,280 --> 00:00:47,557 which is gonna be "find." 17 00:00:50,110 --> 00:00:52,900 So, function, and again, we have access 18 00:00:52,900 --> 00:00:55,540 to the next function. 19 00:00:55,540 --> 00:00:57,870 And actually, let's start by calling it here 20 00:00:57,870 --> 00:01:00,880 at the end so that we don't forget it. 21 00:01:00,880 --> 00:01:03,310 Okay, and so you see, that it looks 22 00:01:03,310 --> 00:01:05,680 exactly like the other middleware, 23 00:01:05,680 --> 00:01:07,170 the other pre-hook. 24 00:01:07,170 --> 00:01:10,320 The only difference here is really this find hook, 25 00:01:10,320 --> 00:01:12,360 which will make this query middleware 26 00:01:12,360 --> 00:01:14,320 and not document middleware. 27 00:01:14,320 --> 00:01:15,153 All right? 28 00:01:15,153 --> 00:01:17,040 And so, the big difference here is 29 00:01:17,040 --> 00:01:20,910 that the this keyword will now point at the current query 30 00:01:20,910 --> 00:01:22,700 and not at the current document, 31 00:01:22,700 --> 00:01:25,580 because we're not really processing any documents here. 32 00:01:25,580 --> 00:01:28,370 We're really gonna be processing a query. 33 00:01:28,370 --> 00:01:29,203 Okay? 34 00:01:29,203 --> 00:01:32,160 And the use case that we're gonna do here is this. 35 00:01:32,160 --> 00:01:34,380 So let's suppose that we can have 36 00:01:34,380 --> 00:01:36,670 secret tours in our database, 37 00:01:36,670 --> 00:01:39,760 like for tours that are only offered internally, 38 00:01:39,760 --> 00:01:43,160 or for a very small, like, VIP group of people, 39 00:01:43,160 --> 00:01:45,420 and that the public shouldn't know about. 40 00:01:45,420 --> 00:01:47,327 Now, since these tours are secret, 41 00:01:47,327 --> 00:01:51,080 we do not want the secret tours to ever appear 42 00:01:51,080 --> 00:01:52,510 in the result outputs. 43 00:01:52,510 --> 00:01:53,510 Right? 44 00:01:53,510 --> 00:01:56,950 And so what we're gonna do is to create a secret tour field 45 00:01:56,950 --> 00:02:00,780 and then query only for tours that are not secret. 46 00:02:00,780 --> 00:02:01,690 All right? 47 00:02:01,690 --> 00:02:02,763 So, let's do that. 48 00:02:04,160 --> 00:02:07,103 Start by adding here, and let's do it right at the end. 49 00:02:11,447 --> 00:02:15,114 secretTour, so the type should be a Boolean, 50 00:02:16,560 --> 00:02:17,980 and I think this is the first time 51 00:02:17,980 --> 00:02:19,710 we're actually using a Boolean, 52 00:02:19,710 --> 00:02:22,030 so this would either be true or false. 53 00:02:22,030 --> 00:02:23,852 So if it's true, then it is a secret tour, 54 00:02:23,852 --> 00:02:25,770 and we don't want it to show up, 55 00:02:25,770 --> 00:02:29,133 and, by default, it is false. 56 00:02:30,570 --> 00:02:31,403 All right? 57 00:02:31,403 --> 00:02:35,000 And so, basically, usually the tours are not secret. 58 00:02:35,000 --> 00:02:35,950 Okay. 59 00:02:35,950 --> 00:02:39,740 Next up, let's actually go ahead and create a secret tour 60 00:02:40,900 --> 00:02:44,610 so that we can then test using it, okay? 61 00:02:44,610 --> 00:02:49,610 So let's call this here the Super Secret Tour. 62 00:02:50,530 --> 00:02:51,880 All of this doesn't matter, 63 00:02:54,130 --> 00:02:58,603 and let me just say that secretTour is indeed true. 64 00:02:59,700 --> 00:03:01,020 Okay? 65 00:03:01,020 --> 00:03:02,443 Save it here ... 66 00:03:03,480 --> 00:03:05,980 And, uh, where is that? 67 00:03:05,980 --> 00:03:08,520 Yeah. So secretTour is true. 68 00:03:08,520 --> 00:03:10,750 And let's now actually head over to Compass 69 00:03:10,750 --> 00:03:13,783 and delete all of these other tours that we had there. 70 00:03:15,600 --> 00:03:17,483 So, let's reload this ... 71 00:03:18,890 --> 00:03:22,813 And then, down here, we should have ... 72 00:03:24,470 --> 00:03:27,890 Yeah, this test tour here, we can delete that. 73 00:03:27,890 --> 00:03:29,613 Another test tour ... 74 00:03:30,740 --> 00:03:32,540 So all this clutter here, basically, 75 00:03:33,730 --> 00:03:35,530 we want to get rid of it. 76 00:03:35,530 --> 00:03:37,600 We only keep the secretTour here 77 00:03:37,600 --> 00:03:40,010 so that we can now experiment with it. 78 00:03:40,010 --> 00:03:43,170 Okay, and you see here that secretTour is set to true, 79 00:03:43,170 --> 00:03:44,530 while the other ones, of course, 80 00:03:44,530 --> 00:03:46,180 do not have this attribute, 81 00:03:46,180 --> 00:03:48,110 because, by the time we created them, 82 00:03:48,110 --> 00:03:49,993 we didn't have the secretTour yet. 83 00:03:51,780 --> 00:03:54,060 So, now, just before we start, 84 00:03:54,060 --> 00:03:57,539 back in Postman, let's confirm that, indeed, 85 00:03:57,539 --> 00:04:01,230 the last tour here, and actually it's not the last tour, 86 00:04:01,230 --> 00:04:02,660 so where is it? 87 00:04:02,660 --> 00:04:03,570 Oh, it's the first one. 88 00:04:03,570 --> 00:04:05,950 So here we have the Super Secret Tour, 89 00:04:05,950 --> 00:04:07,483 of course, set to true. 90 00:04:08,360 --> 00:04:12,010 All right? So, moving back now, 91 00:04:12,010 --> 00:04:13,880 let's now execute the query 92 00:04:13,880 --> 00:04:15,580 like we just said in the beginning. 93 00:04:15,580 --> 00:04:18,350 So, again, keep in mind that this here 94 00:04:18,350 --> 00:04:20,779 is now a query object, all right? 95 00:04:20,779 --> 00:04:23,230 And so we can chain all of the methods 96 00:04:23,230 --> 00:04:25,250 that we have for queries. 97 00:04:25,250 --> 00:04:29,220 And so that simply adds a find method here, 98 00:04:29,220 --> 00:04:31,260 and then basically select all the documents 99 00:04:31,260 --> 00:04:36,070 where secretTour is not true, okay? 100 00:04:36,070 --> 00:04:40,540 So secretTour ... 101 00:04:40,540 --> 00:04:43,530 And then is not equal to true. 102 00:04:43,530 --> 00:04:45,710 And I'm doing it like this because, remember, 103 00:04:45,710 --> 00:04:49,170 the editors are not currently set to false. 104 00:04:49,170 --> 00:04:51,120 They do simply not have this attribute. 105 00:04:52,090 --> 00:04:53,100 All right? 106 00:04:53,100 --> 00:04:56,210 Okay, so let's test it out now again. 107 00:04:56,210 --> 00:04:58,263 And so it should now be gone here. 108 00:04:59,220 --> 00:05:01,483 And indeed, it is no longer here. 109 00:05:02,320 --> 00:05:05,570 Okay, we have all the tours that are not secret, 110 00:05:05,570 --> 00:05:07,290 but not the secret tour. 111 00:05:07,290 --> 00:05:08,943 And I'm now seeing that we actually have 112 00:05:08,943 --> 00:05:11,370 secretTour set to false here, 113 00:05:11,370 --> 00:05:13,850 but that's really just a Mongoose thing, 114 00:05:13,850 --> 00:05:17,913 so let's take another look here at Compass, 115 00:05:18,830 --> 00:05:19,753 and reload. 116 00:05:20,800 --> 00:05:22,920 And so you see that, actually, in the database, 117 00:05:22,920 --> 00:05:25,450 secretTour is not set to false. 118 00:05:25,450 --> 00:05:27,890 Mongoose is simply adding that because we have it 119 00:05:27,890 --> 00:05:30,478 in our schema as the default, and it's not in the database. 120 00:05:30,478 --> 00:05:34,360 And so it's basically, then, putting it there anyway. 121 00:05:34,360 --> 00:05:37,150 So you see that we actually have 11 documents, 122 00:05:37,150 --> 00:05:40,710 but then here in Postman we only get ten results. 123 00:05:40,710 --> 00:05:41,600 And that is, of course, 124 00:05:41,600 --> 00:05:45,360 because our Secret Tour is basically filtered out. 125 00:05:45,360 --> 00:05:46,193 Okay? 126 00:05:46,193 --> 00:05:47,910 So, let's try to understand again 127 00:05:47,910 --> 00:05:49,320 what really happens. 128 00:05:49,320 --> 00:05:51,730 So as soon as we hit this route, here, 129 00:05:51,730 --> 00:05:53,170 using the get method, 130 00:05:53,170 --> 00:05:55,313 let's see what happens. 131 00:05:57,520 --> 00:06:00,340 So, what happens is that we create a query 132 00:06:00,340 --> 00:06:02,700 using tour.find. 133 00:06:02,700 --> 00:06:03,533 Okay? 134 00:06:03,533 --> 00:06:05,900 And then, of course, we chain all these methods to it 135 00:06:05,900 --> 00:06:08,660 as we talked about in one of the last lectures, 136 00:06:08,660 --> 00:06:09,790 and then, by the end, 137 00:06:09,790 --> 00:06:13,770 we then execute that query here by using await. 138 00:06:13,770 --> 00:06:15,280 Right? Remember that? 139 00:06:15,280 --> 00:06:17,460 So this is where we execute the query. 140 00:06:17,460 --> 00:06:20,030 But, before it actually is executed, 141 00:06:20,030 --> 00:06:24,790 then, our pre-find middleware here is executed. 142 00:06:24,790 --> 00:06:25,623 Okay? 143 00:06:25,623 --> 00:06:27,873 And it is executed because it is find, 144 00:06:27,873 --> 00:06:30,270 just like we used here. 145 00:06:30,270 --> 00:06:31,103 Right? 146 00:06:31,103 --> 00:06:33,020 So, we're creating a find query, 147 00:06:33,020 --> 00:06:36,570 and so, therefore, the find hook is then executed. 148 00:06:36,570 --> 00:06:39,420 Then, in here, since it is query middleware, 149 00:06:39,420 --> 00:06:41,630 the this keyword points to the query. 150 00:06:41,630 --> 00:06:43,670 And so, to that query, we can then chain 151 00:06:43,670 --> 00:06:46,230 yet another find method, right? 152 00:06:46,230 --> 00:06:49,160 And in there, we then filter out the secretTour 153 00:06:49,160 --> 00:06:50,930 using this filter object. 154 00:06:50,930 --> 00:06:51,763 Okay? 155 00:06:51,763 --> 00:06:54,280 So basically saying that we only want tours 156 00:06:54,280 --> 00:06:57,450 where the secretTour is not equal to true. 157 00:06:57,450 --> 00:06:59,120 And it would actually work the same 158 00:06:59,120 --> 00:07:00,979 if we simply said here, false, 159 00:07:00,979 --> 00:07:03,790 but I find it cleaner like this. 160 00:07:03,790 --> 00:07:07,660 Okay, there is now just one thing that we need to fix, 161 00:07:07,660 --> 00:07:10,140 because right now this middleware is running 162 00:07:10,140 --> 00:07:13,010 for find, but not for find1. 163 00:07:13,010 --> 00:07:13,843 Okay? 164 00:07:13,843 --> 00:07:17,023 So let me show you the problem that we might get with that. 165 00:07:18,270 --> 00:07:23,120 So, uh, let's take the ID of the Secret Tour. 166 00:07:23,120 --> 00:07:24,570 So we have the Secret Tour here, 167 00:07:24,570 --> 00:07:29,570 and that's its ID, and so if we get tour, 168 00:07:31,370 --> 00:07:35,040 then that should give us the Super Secret Tour here. 169 00:07:35,040 --> 00:07:35,873 Right? 170 00:07:35,873 --> 00:07:37,383 And so you see, that that filter 171 00:07:37,383 --> 00:07:39,470 that we just built in the middleware 172 00:07:39,470 --> 00:07:41,630 is not working for this command. 173 00:07:41,630 --> 00:07:42,463 Okay? 174 00:07:42,463 --> 00:07:45,640 And that's because the handle function for this route, 175 00:07:45,640 --> 00:07:47,360 as you might remember, 176 00:07:47,360 --> 00:07:51,560 is using findByID, which, behind the scenes, 177 00:07:51,560 --> 00:07:55,290 is find1, and so it's different from find. 178 00:07:55,290 --> 00:07:56,242 All right? 179 00:07:56,242 --> 00:08:01,242 So, we need to specify the same middleware also for find1. 180 00:08:01,750 --> 00:08:03,610 Now, there are two ways of doing that, 181 00:08:03,610 --> 00:08:06,760 and the first one would be simply to go ahead, 182 00:08:06,760 --> 00:08:11,363 copy this code, and then put find1 here. 183 00:08:12,210 --> 00:08:14,210 But that's not really good, 184 00:08:14,210 --> 00:08:16,970 and so instead we're gonna use a regular expression. 185 00:08:16,970 --> 00:08:20,530 And that is quite easy, and so ... 186 00:08:20,530 --> 00:08:22,700 And let me actually just duplicate this here, 187 00:08:22,700 --> 00:08:24,013 comment this piece out, 188 00:08:25,495 --> 00:08:28,360 and then, remember, a regular expression 189 00:08:28,360 --> 00:08:30,550 starts and ends with a slash. 190 00:08:30,550 --> 00:08:32,500 And then in here, what I want to say, 191 00:08:32,500 --> 00:08:34,437 is that this middleware should be executed 192 00:08:34,437 --> 00:08:36,510 not only for find, 193 00:08:36,510 --> 00:08:40,450 but for all the commands that start with the name find. 194 00:08:40,450 --> 00:08:41,283 Okay? 195 00:08:41,283 --> 00:08:45,330 So, find, and find1, and also find1 and delete, 196 00:08:45,330 --> 00:08:46,830 find1 and update, 197 00:08:46,830 --> 00:08:49,400 and so all of these will now actually trigger 198 00:08:49,400 --> 00:08:51,550 this middleware function that we have here. 199 00:08:52,760 --> 00:08:53,890 All right? 200 00:08:53,890 --> 00:08:55,580 So, no need for that. 201 00:08:55,580 --> 00:08:58,510 This regular expression here is way better. 202 00:08:58,510 --> 00:08:59,878 So again, this here simply means 203 00:08:59,878 --> 00:09:03,000 all the strings that start with find. 204 00:09:03,000 --> 00:09:05,140 And actually, since we're here, 205 00:09:05,140 --> 00:09:07,883 let me show you the Mongoose documentations again. 206 00:09:08,970 --> 00:09:13,240 So, when we go here, to middleware in these guides, 207 00:09:13,240 --> 00:09:15,670 you'll then have an overview of all the middleware. 208 00:09:15,670 --> 00:09:16,557 For example, document middleware 209 00:09:16,557 --> 00:09:19,041 is the one that we talked about before, 210 00:09:19,041 --> 00:09:21,640 which runs, for example, on save. 211 00:09:21,640 --> 00:09:23,600 But in fact, document middleware can also 212 00:09:23,600 --> 00:09:26,510 run for stuff like remove. 213 00:09:26,510 --> 00:09:27,460 All right? 214 00:09:27,460 --> 00:09:28,840 Or for validate. 215 00:09:28,840 --> 00:09:31,220 Okay, but I didn't talk about these because 216 00:09:31,220 --> 00:09:34,750 usually the one that we always use is just for save. 217 00:09:34,750 --> 00:09:37,590 Now, query middleware can run for 218 00:09:37,590 --> 00:09:39,340 all of these query functions. 219 00:09:39,340 --> 00:09:41,980 So find, as we just specified, 220 00:09:41,980 --> 00:09:43,780 and now, with our regular expression, 221 00:09:43,780 --> 00:09:45,520 it's also gonna run for find1, 222 00:09:45,520 --> 00:09:47,270 findOneAndDelete, findOneAndRemove, 223 00:09:48,768 --> 00:09:50,518 and findOneAndUpdate. 224 00:09:51,850 --> 00:09:55,130 Anyway, moving back to Postman now, 225 00:09:55,130 --> 00:09:58,650 this should now have fixed this situation here. 226 00:09:58,650 --> 00:10:01,210 So when we now run this query, 227 00:10:01,210 --> 00:10:03,040 it should have no results. 228 00:10:03,040 --> 00:10:04,800 And indeed, it doesn't. 229 00:10:04,800 --> 00:10:08,220 Because, remember, we were trying to get a secretTour. 230 00:10:08,220 --> 00:10:10,370 So the tour with this ID here is secret, 231 00:10:10,370 --> 00:10:12,520 but we never want the secretTours 232 00:10:12,520 --> 00:10:14,380 to show up in any query. 233 00:10:14,380 --> 00:10:17,283 And so that's why, right now, we get zero results. 234 00:10:18,190 --> 00:10:19,023 Okay? 235 00:10:19,023 --> 00:10:20,510 So that works now. 236 00:10:20,510 --> 00:10:22,160 Don't save this, 237 00:10:22,160 --> 00:10:24,230 and now, back to our code. 238 00:10:24,230 --> 00:10:25,900 Let's now actually also specify 239 00:10:25,900 --> 00:10:28,333 a post middleware for find. 240 00:10:30,140 --> 00:10:35,140 So, tourSchema, and then, just like before, post, 241 00:10:35,820 --> 00:10:38,510 and then let's use our regular expression here again 242 00:10:38,510 --> 00:10:41,113 for anything starting with find. 243 00:10:43,340 --> 00:10:45,240 And then just a regular function, 244 00:10:45,240 --> 00:10:47,400 and then here, in the post-find middleware, 245 00:10:47,400 --> 00:10:49,810 we actually get access to all the documents 246 00:10:49,810 --> 00:10:51,713 that we returned from the query. 247 00:10:52,680 --> 00:10:54,573 So let's call that Docs. 248 00:10:55,680 --> 00:10:56,780 All right? 249 00:10:56,780 --> 00:10:59,350 So, remember that this middleware is gonna run 250 00:10:59,350 --> 00:11:02,280 after the query has already executed. 251 00:11:02,280 --> 00:11:04,100 And so, therefore, it can have access 252 00:11:04,100 --> 00:11:06,120 to the documents that were returned. 253 00:11:06,120 --> 00:11:07,900 Again, because that query has 254 00:11:07,900 --> 00:11:10,033 actually already finished at this point. 255 00:11:11,580 --> 00:11:15,510 So let's log these documents to the console, 256 00:11:15,510 --> 00:11:16,343 so docs, 257 00:11:16,343 --> 00:11:20,360 but I also want to do something else here. 258 00:11:20,360 --> 00:11:22,710 So basically, let's create, kind of, 259 00:11:22,710 --> 00:11:25,150 a clock to measure how long it takes 260 00:11:25,150 --> 00:11:27,163 to execute the current query. 261 00:11:28,120 --> 00:11:28,953 All right? 262 00:11:28,953 --> 00:11:30,770 So, how are we gonna do that? 263 00:11:30,770 --> 00:11:32,680 Well, quite simple. 264 00:11:32,680 --> 00:11:36,180 We can simply set a property onto the this object, 265 00:11:36,180 --> 00:11:39,810 because this query object is really just a regular object. 266 00:11:39,810 --> 00:11:42,570 Of course it has access to all these methods, 267 00:11:42,570 --> 00:11:43,760 such as find, 268 00:11:43,760 --> 00:11:45,020 but we can also use it 269 00:11:45,020 --> 00:11:47,283 to set any property that we want on it. 270 00:11:48,660 --> 00:11:51,000 So, again, just a regular object. 271 00:11:51,000 --> 00:11:53,410 And so here we can say this.start 272 00:11:53,410 --> 00:11:55,333 should be the current date. 273 00:11:56,410 --> 00:11:57,243 Okay? 274 00:11:57,243 --> 00:11:59,380 And so this will set it as the 275 00:11:59,380 --> 00:12:02,150 current time in milliseconds, okay? 276 00:12:02,150 --> 00:12:05,320 And so then, here, in the post middleware, 277 00:12:05,320 --> 00:12:08,200 which is gonna run after the query has executed, 278 00:12:08,200 --> 00:12:10,310 we can then subtract the current time 279 00:12:10,310 --> 00:12:11,603 minus the start time. 280 00:12:14,640 --> 00:12:15,833 So console.log, 281 00:12:18,470 --> 00:12:19,583 query took, 282 00:12:21,240 --> 00:12:22,600 and now the current date 283 00:12:26,970 --> 00:12:28,073 minus this.start, 284 00:12:33,400 --> 00:12:34,423 milliseconds. 285 00:12:35,510 --> 00:12:38,295 Okay, let's give it a save, 286 00:12:38,295 --> 00:12:43,295 and so let's now try to run a query and see our results. 287 00:12:45,090 --> 00:12:46,469 Okay? 288 00:12:46,469 --> 00:12:48,390 So, here we get all our tours, 289 00:12:48,390 --> 00:12:49,713 here we have the console, 290 00:12:50,700 --> 00:12:52,140 and let's actually clear that. 291 00:12:52,140 --> 00:12:53,740 There's a lot of stuff in there. 292 00:12:55,540 --> 00:12:56,763 Request again, 293 00:12:58,340 --> 00:13:00,480 and so here are all the results. 294 00:13:00,480 --> 00:13:03,210 So basically these are all the tours that were found, 295 00:13:03,210 --> 00:13:06,490 and so that's the result of console.log of the docs. 296 00:13:06,490 --> 00:13:09,890 So basically the documents that matched the query. 297 00:13:09,890 --> 00:13:13,220 But I'm now interested in this first console.log, 298 00:13:13,220 --> 00:13:17,670 and so, here we see "Query took 120 milliseconds," 299 00:13:17,670 --> 00:13:19,970 and so that was basically the time that passed 300 00:13:19,970 --> 00:13:22,660 from the beginning, where we defined this, 301 00:13:22,660 --> 00:13:26,950 to after the query has executed, at this point in time. 302 00:13:26,950 --> 00:13:27,783 All right. 303 00:13:27,783 --> 00:13:29,910 And that is all that I had to show you for now 304 00:13:29,910 --> 00:13:31,550 about query middleware, 305 00:13:31,550 --> 00:13:32,680 and just like before, 306 00:13:32,680 --> 00:13:34,370 of course we're gonna use this a lot 307 00:13:34,370 --> 00:13:35,380 throughout the course, 308 00:13:35,380 --> 00:13:37,450 because, as I mentioned in the beginning, 309 00:13:37,450 --> 00:13:39,840 middleware is really a fundamental concept 310 00:13:39,840 --> 00:13:42,010 that's really important for a lot of stuff 311 00:13:42,010 --> 00:13:44,060 that we need in our applications. 312 00:13:44,060 --> 00:13:46,140 So we're almost done talking about middleware. 313 00:13:46,140 --> 00:13:48,070 Next up is the last one, 314 00:13:48,070 --> 00:13:49,823 which is aggregation middleware. 23030

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