Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:01,290 --> 00:00:02,850
So, in the last two videos,
2
00:00:02,850 --> 00:00:05,580
we created a nested POST endpoint
3
00:00:05,580 --> 00:00:08,910
in order to create new reviews on a certain tour.
4
00:00:08,910 --> 00:00:10,420
So, let's now build upon that,
5
00:00:10,420 --> 00:00:13,113
and also create a nested GET endpoint.
6
00:00:14,860 --> 00:00:17,290
So we already have our getAllReviews
7
00:00:17,290 --> 00:00:19,570
handler function implemented, right?
8
00:00:19,570 --> 00:00:22,940
But right now, all it does is to basically get an array
9
00:00:22,940 --> 00:00:26,040
of all the reviews in the review collection.
10
00:00:26,040 --> 00:00:29,020
Now, a common use case for your API
11
00:00:29,020 --> 00:00:32,030
might be to get an array of all the reviews
12
00:00:32,030 --> 00:00:34,500
of one particular tour, so very similar
13
00:00:34,500 --> 00:00:37,080
to the createReview, right?
14
00:00:37,080 --> 00:00:39,750
So basically similar to this route here,
15
00:00:39,750 --> 00:00:41,840
but except with GET.
16
00:00:41,840 --> 00:00:46,590
So, basically something like this, okay?
17
00:00:46,590 --> 00:00:49,330
And so, all we need to do in order to implement this
18
00:00:49,330 --> 00:00:51,640
is to do some simple changes
19
00:00:51,640 --> 00:00:54,880
to our getAllReviews handler function, right?
20
00:00:54,880 --> 00:00:57,760
Because right now, thanks to the merge params,
21
00:00:57,760 --> 00:01:02,290
and this kind of redirecting that we implemented here
22
00:01:02,290 --> 00:01:05,510
in the last video, so thanks to all that,
23
00:01:05,510 --> 00:01:09,070
this getAllReviews handler function will now automatically
24
00:01:09,070 --> 00:01:11,660
get called whenever there is a GET request
25
00:01:11,660 --> 00:01:14,020
for a URL that looks like this,
26
00:01:14,020 --> 00:01:17,060
and will also get access to the tourId,
27
00:01:17,060 --> 00:01:20,950
and again, thanks to mergeParams set to true.
28
00:01:20,950 --> 00:01:21,783
All right?
29
00:01:21,783 --> 00:01:26,783
So let's just do some very simple changes here, all right?
30
00:01:27,080 --> 00:01:29,080
And what we're going to do here is to check
31
00:01:29,080 --> 00:01:32,450
if there is a tourId, and if there is one, well,
32
00:01:32,450 --> 00:01:34,540
then we're only going to search for reviews
33
00:01:34,540 --> 00:01:38,260
where the tour is equal to that tourId, okay?
34
00:01:38,260 --> 00:01:39,530
So, that's something that's very simple
35
00:01:39,530 --> 00:01:42,800
to implement using find, right?
36
00:01:42,800 --> 00:01:46,600
So basically, what we're doing is something like this.
37
00:01:46,600 --> 00:01:51,127
So, if there is request.params.tourId,
38
00:01:53,690 --> 00:01:56,230
then we want to create a filter object,
39
00:01:56,230 --> 00:01:59,100
which we will then later use right here.
40
00:01:59,100 --> 00:02:02,580
Let's actually put it here right away,
41
00:02:02,580 --> 00:02:05,820
and we also need to kind of initialize it.
42
00:02:05,820 --> 00:02:10,820
So, let filter, because we want to then mutate this, okay?
43
00:02:11,530 --> 00:02:14,460
So, if there is a tourId, then this filter
44
00:02:14,460 --> 00:02:15,710
should be equal to
45
00:02:17,880 --> 00:02:20,087
tour: req.params.tourId.
46
00:02:25,570 --> 00:02:28,740
Okay, and so, again, if there is a tourId,
47
00:02:28,740 --> 00:02:32,520
then basically, this object here is what will be here.
48
00:02:32,520 --> 00:02:34,610
And so then only the reviews where the tour
49
00:02:34,610 --> 00:02:37,090
matches the ID are going to be found.
50
00:02:37,090 --> 00:02:40,610
So if it's all regular API call without nested route,
51
00:02:40,610 --> 00:02:44,450
well then that filter will simply be this empty object,
52
00:02:44,450 --> 00:02:48,130
and so then we're gonna find all the reviews, okay?
53
00:02:48,130 --> 00:02:50,140
And, so, let's actually test this,
54
00:02:50,140 --> 00:02:54,423
because this is all we need to change here, all right?
55
00:02:56,030 --> 00:02:57,913
So, let's save this one,
56
00:02:59,100 --> 00:03:03,680
this one as well, all right?
57
00:03:03,680 --> 00:03:07,300
And so, to start, let's test if our getAllReviews,
58
00:03:07,300 --> 00:03:12,060
so the regular one, still works as intended, okay?
59
00:03:12,060 --> 00:03:15,830
So we get all the four reviews that are in our collection.
60
00:03:15,830 --> 00:03:17,373
Let's just verify that,
61
00:03:19,320 --> 00:03:22,803
and indeed there are four documents, okay?
62
00:03:23,800 --> 00:03:25,220
But now, let's actually create
63
00:03:25,220 --> 00:03:29,510
our nested getAllReviews route, okay?
64
00:03:29,510 --> 00:03:32,433
So, what I'm going to do is to copy this one.
65
00:03:35,270 --> 00:03:40,270
Okay, and then simply add reviews, okay?
66
00:03:40,460 --> 00:03:43,670
And so this tour is the City Wanderer,
67
00:03:43,670 --> 00:03:46,020
and it actually has one review.
68
00:03:46,020 --> 00:03:48,530
And so, we expect now to get an array
69
00:03:48,530 --> 00:03:51,340
with one object in there, okay?
70
00:03:51,340 --> 00:03:53,110
So, it just had one review.
71
00:03:53,110 --> 00:03:55,770
And indeed, that is exactly what we get.
72
00:03:55,770 --> 00:04:00,430
So these are all the reviews that are present on this tour,
73
00:04:00,430 --> 00:04:02,860
so, the tour with this ID.
74
00:04:02,860 --> 00:04:06,323
And, actually, that's pretty correct, right?
75
00:04:07,210 --> 00:04:11,220
Let's try another one, and I remember that this one,
76
00:04:11,220 --> 00:04:14,743
so the Forest Hiker, actually had I think two reviews.
77
00:04:15,990 --> 00:04:19,173
So let's see if that works as well.
78
00:04:21,000 --> 00:04:22,690
And so yeah, indeed.
79
00:04:22,690 --> 00:04:23,563
Here there are.
80
00:04:24,930 --> 00:04:26,340
All right?
81
00:04:26,340 --> 00:04:30,830
So let's save that, still in that tours/review folder,
82
00:04:30,830 --> 00:04:33,387
and so getAllReviews on tour.
83
00:04:39,840 --> 00:04:41,540
Okay, great.
84
00:04:41,540 --> 00:04:45,710
That's actually all I had to show you about nested routes.
85
00:04:45,710 --> 00:04:49,610
So next up, let's continue filling up our review controller,
86
00:04:49,610 --> 00:04:52,462
because right now we really only have getAllReviews
87
00:04:52,462 --> 00:04:54,350
and createReview.
88
00:04:54,350 --> 00:04:56,380
And so we also want to update,
89
00:04:56,380 --> 00:04:58,540
to delete, and all that stuff,
90
00:04:58,540 --> 00:05:01,253
and so let's take care of that in the next lecture.
7044
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.