1
00:00:03,910 --> 00:00:09,095
Đó là thời gian để bắt đầu vào thứ tư và nhiệm vụ cuối cùng của khóa học này.

2
00:00:09,095 --> 00:00:12,170
Tôi đã thiết kế nhiệm vụ này để củng cố

3
00:00:12,170 --> 00:00:15,610
tất cả mọi thứ mà bạn đã học được trong khóa học này.

4
00:00:15,610 --> 00:00:21,990
Vì vậy, nhiệm vụ này sẽ liên quan đến việc định tuyến bằng cách sử dụng bộ định tuyến nhanh.

5
00:00:21,990 --> 00:00:26,340
Nó sẽ liên quan đến việc thiết kế các lược đồ trong mô hình,

6
00:00:26,340 --> 00:00:29,420
cho MongoDB và Mongoose của chúng tôi,

7
00:00:29,420 --> 00:00:33,531
và sau đó nó cũng sẽ xem xét một thời gian ngắn xác thực người dùng.

8
00:00:33,531 --> 00:00:36,420
Chính xác thì chúng ta sẽ làm gì trong nhiệm vụ này?

9
00:00:36,420 --> 00:00:41,600
Nhiệm vụ này dựa trên khả năng cho người dùng để

10
00:00:41,600 --> 00:00:49,510
lưu và lấy một danh sách các món ăn như là món ăn ưa thích của họ ở phía máy chủ.

11
00:00:49,510 --> 00:00:53,105
Nếu bạn đã thực hiện các khóa học trước đây của chuyên môn này,

12
00:00:53,105 --> 00:00:58,275
đặc biệt là lai di động ứng dụng phát triển khóa học, cho

13
00:00:58,275 --> 00:01:00,675
dù đó là ion hoặc bản địa kịch bản,

14
00:01:00,675 --> 00:01:06,720
bạn đã thấy rằng chúng tôi đã thiết kế các ứng dụng để có khả năng cho phép người dùng để

15
00:01:06,720 --> 00:01:10,355
lưu các món ăn trong danh sách yêu thích của họ các món ăn

16
00:01:10,355 --> 00:01:14,480
và cũng lấy các món ăn từ danh sách các món ăn yêu thích của họ.

17
00:01:14,480 --> 00:01:17,840
Khi chúng tôi thực hiện rằng trong các khóa học trước đó,

18
00:01:17,840 --> 00:01:24,085
chúng tôi đã thực hiện rằng bằng cách sử dụng địa phương lưu trữ trên các thiết bị cụ thể.

19
00:01:24,085 --> 00:01:26,330
Trong nhiệm vụ này, bạn sẽ mở rộng

20
00:01:26,330 --> 00:01:30,308
phía máy chủ để có thể hỗ trợ chính xác điều đó.

21
00:01:30,308 --> 00:01:34,940
Bằng cách này, người dùng có thể lưu danh sách các món ăn yêu thích của họ

22
00:01:34,940 --> 00:01:37,805
ở phía máy chủ và truy cập danh sách này từ

23
00:01:37,805 --> 00:01:41,950
bất kỳ thiết bị nào mà từ đó họ sẽ đăng nhập vào máy chủ của họ.

24
00:01:41,950 --> 00:01:49,140
Điều này có nghĩa là chúng ta cần thiết kế một tuyến đường mới cho máy chủ của chúng tôi,

25
00:01:49,140 --> 00:01:52,615
mà chúng tôi sẽ gọi là tuyến đường /favorites.

26
00:01:52,615 --> 00:01:59,314
Trên tuyến đường này, chúng ta sẽ phải thiết kế bộ định tuyến tốc hành để hỗ trợ lấy,

27
00:01:59,314 --> 00:02:03,515
đăng và xóa các hoạt động trên tuyến đường này và

28
00:02:03,515 --> 00:02:08,495
cũng thiết kế giản đồ để lưu trữ các món ăn yêu thích

29
00:02:08,495 --> 00:02:13,343
và mô hình Mongoose tương ứng và

30
00:02:13,343 --> 00:02:19,820
kết nối hai với nhau để thông tin có thể được lưu lại và được lấy từ MongoDB.

31
00:02:19,820 --> 00:02:27,590
Chúng tôi cũng sẽ sử dụng quần thể Mongoose để rút ra thông tin từ

32
00:02:27,590 --> 00:02:32,000
mô hình người dùng và từ mô hình món ăn khi chúng tôi đặt

33
00:02:32,000 --> 00:02:37,105
lại với nhau danh sách các món ăn yêu thích cho người dùng của chúng tôi.

34
00:02:37,105 --> 00:02:41,355
Các món ăn yêu thích thông tin mà bạn lưu trữ sẽ không

35
00:02:41,355 --> 00:02:46,355
thực sự chứa thông tin người dùng hoặc thông tin của món ăn.

36
00:02:46,355 --> 00:02:53,000
Thay vào đó, nó sẽ chứa các con trỏ đến các tài liệu cho các tài liệu món ăn và cho

37
00:02:53,000 --> 00:02:56,660
các tài liệu người dùng và sau đó chúng tôi sẽ xuất bản thông tin này

38
00:02:56,660 --> 00:03:03,155
khi chúng tôi đang gửi lại thông tin này để đáp ứng với một yêu cầu get.

39
00:03:03,155 --> 00:03:05,495
Hãy nhìn vào cách chúng tôi thực hiện nhiệm vụ

40
00:03:05,495 --> 00:03:13,135
cuối cùng này và cũng là những nhiệm vụ khác nhau trong nhiệm vụ cuối cùng này.

41
00:03:13,135 --> 00:03:17,370
Để giúp bạn hiểu những gì được yêu cầu trong

42
00:03:17,370 --> 00:03:21,330
nhiệm vụ cuối cùng hoặc những gì bạn sẽ được thực hiện trong nhiệm vụ cuối cùng,

43
00:03:21,330 --> 00:03:26,835
hãy để tôi chứng minh những gì máy chủ của bạn dự kiến sẽ làm ở cuối nhiệm vụ này,

44
00:03:26,835 --> 00:03:31,540
và sau đó tôi sẽ liệt kê ra ba nhiệm vụ mà bạn cần thực hiện trong này phân công.

45
00:03:31,540 --> 00:03:35,460
Để bắt đầu, chúng ta cần một bộ các món ăn đã có

46
00:03:35,460 --> 00:03:40,250
ở phía máy chủ để người dùng có thể đánh dấu một số món ăn như món ăn yêu thích của họ.

47
00:03:40,250 --> 00:03:47,805
Tôi đã đi trước và thêm vào bốn món ăn vào danh sách các món ăn của tôi ở phía máy chủ.

48
00:03:47,805 --> 00:03:50,065
Bạn đã biết làm thế nào để làm điều này.

49
00:03:50,065 --> 00:03:52,725
Bạn phải đăng nhập với tư cách quản trị viên và sau đó đăng

50
00:03:52,725 --> 00:03:56,670
thông tin món ăn này lên phía máy chủ từng người một.

51
00:03:56,670 --> 00:04:01,590
Để cho phép bạn nhận được thông tin cho mỗi món ăn,

52
00:04:01,590 --> 00:04:05,405
tôi đã cung cấp cho bạn các tập tin db.json trong đó có

53
00:04:05,405 --> 00:04:11,400
các tài liệu JSON tương ứng với mỗi món ăn trong các tài nguyên phân công.

54
00:04:11,400 --> 00:04:14,670
Bạn có thể mở, cắt và dán thông tin từ đó và sau đó

55
00:04:14,670 --> 00:04:19,576
tạo một danh sách các món ăn ở phía máy chủ của bạn.

56
00:04:19,576 --> 00:04:22,980
Ở đây, bạn sẽ thấy rằng tôi đã thực hiện các hoạt động get trên

57
00:04:22,980 --> 00:04:26,940
localhost:3000/món ăn và sau đó bạn

58
00:04:26,940 --> 00:04:31,140
thấy rằng tôi đã có được danh sách các món ăn ở đây.

59
00:04:31,140 --> 00:04:38,570
Điều quan trọng đối với chúng tôi cần lưu ý là mỗi món ăn sẽ có ID món ăn riêng ở đây.

60
00:04:38,570 --> 00:04:42,384
Khi bạn cần đánh dấu bất kỳ món ăn nào là yêu thích của

61
00:04:42,384 --> 00:04:46,470
bạn, bạn cần truy cập vào ID món ăn cho mỗi món ăn này.

62
00:04:46,470 --> 00:04:51,030
Bạn có thể sao chép bốn ID món ăn này và sau đó lưu chúng để khi bạn

63
00:04:51,030 --> 00:04:56,094
thực hiện các thao tác để thêm các món ăn vào danh sách các món ăn,

64
00:04:56,094 --> 00:05:00,085
sau đó bạn sẽ có thể sử dụng ID món ăn này.

65
00:05:00,085 --> 00:05:02,730
Vì vậy, tôi sẽ sao chép bốn ID món ăn và sau đó lưu

66
00:05:02,730 --> 00:05:05,820
chúng trong một tài liệu văn bản để tôi có thể sử dụng chúng.

67
00:05:05,820 --> 00:05:09,325
Trước khi tôi có thể thêm các món ăn vào danh sách các món ăn của

68
00:05:09,325 --> 00:05:12,347
tôi, tôi rõ ràng cần phải đăng nhập với tư cách là một người dùng.

69
00:05:12,347 --> 00:05:16,370
Hãy để tôi tiếp tục đăng nhập với tư cách là một trong những người sử dụng.

70
00:05:16,370 --> 00:05:25,245
Để làm điều đó, hãy để tôi làm một bài đăng trên localhost:3000/users/login.

71
00:05:25,245 --> 00:05:28,530
Và trong nội dung của tin nhắn,

72
00:05:28,530 --> 00:05:35,940
hãy để tôi gõ vào một trong những người dùng đã đăng ký.

73
00:05:35,940 --> 00:05:42,375
Tôi không muốn đăng nhập với tư cách quản trị viên nhưng là một trong những người dùng bình thường khác.

74
00:05:42,375 --> 00:05:47,442
Vì vậy, hãy để tôi làm bài này để https://localhost:3443.

75
00:05:47,442 --> 00:05:48,890
Bây giờ tất cả các hoạt động

76
00:05:48,890 --> 00:05:55,200
này, điều này là tốt hơn để làm điều đó trên điểm cuối HTTPS chứ không phải là điểm cuối HTTP.

77
00:05:55,200 --> 00:06:01,920
Chúng tôi sẽ làm một bài đăng đến điểm cuối này và đăng nhập vào dịch vụ

78
00:06:01,920 --> 00:06:05,920
của chúng tôi, và để đáp lại, bạn sẽ có thể giữ mã thông báo web JSON.

79
00:06:05,920 --> 00:06:11,190
Vì vậy, chúng ta hãy làm một bản sao của mã thông báo web JSON này bởi vì chúng ta sẽ cần điều này để

80
00:06:11,190 --> 00:06:16,905
thực hiện bất kỳ hoạt động để thêm các món ăn vào danh sách yêu thích của chúng tôi.

81
00:06:16,905 --> 00:06:22,628
Hãy để tôi sao chép mã thông báo này và lưu nó trong tài liệu văn bản của tôi.

82
00:06:22,628 --> 00:06:27,935
Bây giờ, làm thế nào để thêm một món ăn vào danh sách yêu thích của tôi?

83
00:06:27,935 --> 00:06:33,450
Để làm điều đó, bước đầu tiên là chúng ta

84
00:06:33,450 --> 00:06:40,355
phải truy cập điểm cuối /favorites.

85
00:06:40,355 --> 00:06:45,435
Nếu bạn muốn thêm một món ăn cụ thể vào danh sách các mục yêu thích,

86
00:06:45,435 --> 00:06:52,605
chúng tôi chỉ cần nói /yêu thích và sau đó thêm ID món ăn vào URL ở đây.

87
00:06:52,605 --> 00:06:57,970
Hãy để tôi dán vào một ID món ăn mà tôi muốn thêm vào danh sách yêu thích của tôi.

88
00:06:57,970 --> 00:07:03,130
Ở đây, tôi đã dán trong ID món ăn của tôi vào danh sách các mục yêu thích.

89
00:07:03,130 --> 00:07:08,025
Nội dung của thông điệp máy chủ này sẽ

90
00:07:08,025 --> 00:07:13,590
không chứa bất cứ điều gì vì mọi thứ tôi cần đã có trong URL.

91
00:07:13,590 --> 00:07:16,043
Và đối với tiêu đề,

92
00:07:16,043 --> 00:07:18,984
tôi cần phải thiết lập tiêu đề ủy quyền,

93
00:07:18,984 --> 00:07:21,371
và trong tiêu đề ủy quyền,

94
00:07:21,371 --> 00:07:24,380
tôi cần mã thông báo.

95
00:07:24,380 --> 00:07:29,487
Vì vậy, hãy để tôi sao chép mã thông báo ở đây và sau đó trong tiêu đề ủy quyền,

96
00:07:29,487 --> 00:07:34,750
giả sử người mang, và dán vào tiêu đề ủy quyền.

97
00:07:34,750 --> 00:07:39,853
Bạn cũng có thể làm điều tương tự để có được mã thông báo.

98
00:07:39,853 --> 00:07:46,925
Bạn cũng có thể đăng nhập thông qua Facebook và sau đó có được mã thông báo web JSON.

99
00:07:46,925 --> 00:07:50,960
Tôi đã minh họa để có được mã thông báo web JSON bằng cách sử dụng

100
00:07:50,960 --> 00:07:55,655
xác thực địa phương tiêu chuẩn bằng cách sử dụng tên người dùng và mật khẩu,

101
00:07:55,655 --> 00:07:58,940
nhưng không quan trọng cách nào bạn có được mã thông báo web JSON.

102
00:07:58,940 --> 00:08:01,160
Miễn là bạn có mã thông báo web JSON,

103
00:08:01,160 --> 00:08:04,376
bạn sẽ có thể thực hiện tất cả các thao tác này.

104
00:08:04,376 --> 00:08:10,280
Hãy để tôi thực hiện thao tác bài trên điểm cuối này và nhớ rằng đây

105
00:08:10,280 --> 00:08:16,570
là ID món ăn cho món ăn cụ thể mà tôi muốn thêm vào danh sách yêu thích của tôi.

106
00:08:16,570 --> 00:08:19,895
Khi tôi đăng vào danh sách các mục yêu thích,

107
00:08:19,895 --> 00:08:29,135
bạn sẽ thấy rằng máy chủ của tôi sẽ trả lời lại với tài liệu này ở đây trong nội dung trả lời.

108
00:08:29,135 --> 00:08:33,328
Bây giờ, chúng ta hãy kiểm tra tài liệu này để xem chính xác những gì nó chứa.

109
00:08:33,328 --> 00:08:36,680
Tài liệu này, như bạn có thể thấy, chứa một ID,

110
00:08:36,680 --> 00:08:39,511
nhưng rõ ràng bởi vì đây là một tài liệu JSON,

111
00:08:39,511 --> 00:08:43,115
ngoài ra nó còn chứa một

112
00:08:43,115 --> 00:08:46,335
Field ở đây được gọi là user.

113
00:08:46,335 --> 00:08:48,425
Bây giờ lĩnh vực người dùng này lưu trữ những gì?

114
00:08:48,425 --> 00:08:53,848
Trường người dùng này là ID đối tượng của người dùng

115
00:08:53,848 --> 00:09:00,620
tương ứng với người mà danh sách yêu thích cụ thể này là.

116
00:09:00,620 --> 00:09:02,960
Và nhìn vào các món ăn.

117
00:09:02,960 --> 00:09:10,120
Các món ăn là một mảng và nó là một mảng các ID món ăn.

118
00:09:10,120 --> 00:09:15,950
Và trong trường hợp này, tôi chỉ cần thêm món ăn đầu tiên vào danh sách yêu thích của tôi.

119
00:09:15,950 --> 00:09:22,690
Vì vậy, đó là lý do tại sao tôi chỉ có một món ăn trong mảng các món ăn trong danh sách yêu thích của tôi.

120
00:09:22,690 --> 00:09:30,140
Vì vậy, điều này sẽ ngay lập tức đề nghị cho bạn làm thế nào để thiết kế giản đồ cho yêu thích của bạn.

121
00:09:30,140 --> 00:09:34,760
Vì vậy, các món ăn chứa các đối tượng ID của mỗi món ăn,

122
00:09:34,760 --> 00:09:39,124
và người dùng chứa các đối tượng ID tương ứng với người dùng.

123
00:09:39,124 --> 00:09:42,335
Bạn đã thấy làm thế nào tôi sử dụng

124
00:09:42,335 --> 00:09:49,800
các thông tin để làm dân số của các thông tin khi tôi làm một hoạt động get.

125
00:09:49,800 --> 00:09:52,690
Chúng tôi đã làm điều đó với ý kiến đã.

126
00:09:52,690 --> 00:09:57,980
Vì vậy, điều đó sẽ cung cấp cho bạn một gợi ý lớn về cách bạn sẽ thiết kế giản đồ trong đó có

127
00:09:57,980 --> 00:10:04,855
người sử dụng và các mảng của các món ăn trong danh sách của tôi về các món ăn ở đây.

128
00:10:04,855 --> 00:10:07,330
Bây giờ, chúng tôi đã thực hiện bài viết về vấn đề này.

129
00:10:07,330 --> 00:10:09,500
Hãy lấy danh sách các mục yêu thích.

130
00:10:09,500 --> 00:10:11,750
Vì vậy, để có được danh sách các mục yêu thích,

131
00:10:11,750 --> 00:10:14,405
tôi cần phải thực hiện một hoạt động get.

132
00:10:14,405 --> 00:10:16,561
Bây giờ, đối với thao tác get,

133
00:10:16,561 --> 00:10:21,950
tôi rõ ràng cần phải có thông tin ủy quyền ở đây bởi vì

134
00:10:21,950 --> 00:10:27,635
bạn muốn một người dùng có thể truy xuất chỉ danh sách các mục yêu thích của họ,

135
00:10:27,635 --> 00:10:32,905
và không có người dùng nào khác có thể truy xuất danh sách các mục yêu thích cho một người dùng khác nhau.

136
00:10:32,905 --> 00:10:34,590
Vì vậy, điều này rất quan trọng.

137
00:10:34,590 --> 00:10:37,640
Vì vậy, điều này cho thấy bạn rằng bạn cần phải

138
00:10:37,640 --> 00:10:41,620
xác minh tính xác thực của người dùng ngay cả đối với thao tác get.

139
00:10:41,620 --> 00:10:45,185
Bây giờ, làm thế nào để hậu thao tác

140
00:10:45,185 --> 00:10:49,760
tự động nhận được ID đối tượng này tương ứng với người dùng?

141
00:10:49,760 --> 00:10:55,175
Nhớ lại rằng khi bạn bao gồm tiêu đề ủy quyền ở đây,

142
00:10:55,175 --> 00:10:57,457
từ tiêu đề ủy quyền,

143
00:10:57,457 --> 00:11:01,055
bằng cách bạn thực hiện ủy quyền của người dùng,

144
00:11:01,055 --> 00:11:06,240
chỉ đạo các thuộc tính người dùng đó đã được nạp vào đối tượng yêu cầu.

145
00:11:06,240 --> 00:11:10,270
Và đó là nơi bạn sẽ nhận được quyền truy cập vào ID đối tượng của người dùng.

146
00:11:10,270 --> 00:11:13,914
Vì vậy, một gợi ý nữa về cách bạn sẽ điền vào thông tin này.

147
00:11:13,914 --> 00:11:16,655
Vì vậy, đó là lý do tại sao thông báo rằng khi tôi thực hiện bài đăng,

148
00:11:16,655 --> 00:11:19,625
tôi không bao giờ chỉ định người dùng bởi vì

149
00:11:19,625 --> 00:11:23,825
thông tin của người dùng nên tự động được

150
00:11:23,825 --> 00:11:28,484
bắt nguồn từ những gì chúng tôi đã cung cấp ở đây trong tiêu đề ủy quyền.

151
00:11:28,484 --> 00:11:32,565
Vì vậy, một gợi ý nữa về cách bạn sẽ đi về việc thực hiện điều này.

152
00:11:32,565 --> 00:11:36,830
Vì vậy, đó là lý do tại sao tôi nói nhiệm vụ này là một

153
00:11:36,830 --> 00:11:41,835
sự hợp nhất của tất cả các chủ đề mà bạn đã khám phá trong khóa học này.

154
00:11:41,835 --> 00:11:47,200
Bây giờ, tôi không hỗ trợ một hoạt động get trên một ID món ăn cụ thể.

155
00:11:47,200 --> 00:11:50,610
Nó không có ý nghĩa để hỗ trợ điều đó trên mục yêu thích,

156
00:11:50,610 --> 00:11:53,345
trong một ID món ăn cụ thể.

157
00:11:53,345 --> 00:11:58,595
Thay vào đó, chúng ta có thể thực hiện một hoạt động get trên máy chủ địa phương 3443/yêu thích.

158
00:11:58,595 --> 00:12:01,670
Và sau đó chúng tôi thực hiện các hoạt động get.

159
00:12:01,670 --> 00:12:09,398
Bạn sẽ ngay lập tức nhận thấy rằng tài liệu được trả lại cho bạn chứa

160
00:12:09,398 --> 00:12:17,715
thông tin của người dùng đã được xác định bởi các hoạt động nhận được ở đây.

161
00:12:17,715 --> 00:12:18,950
Vì vậy, thông tin của người dùng.

162
00:12:18,950 --> 00:12:22,112
Vì vậy, thay vì ID người dùng ở đó,

163
00:12:22,112 --> 00:12:26,445
thông tin của người dùng đã có mặt trong đó.

164
00:12:26,445 --> 00:12:28,730
Điều này được thực hiện thông qua dân số của Mongo.

165
00:12:28,730 --> 00:12:34,435
Vì vậy, đó là một gợi ý lớn về cách bạn đang phải thực hiện các hoạt động get.

166
00:12:34,435 --> 00:12:37,130
Không chỉ thông tin của người dùng được điền vào.

167
00:12:37,130 --> 00:12:39,626
Bây giờ tại sao tôi muốn thông tin của người dùng được điền vào?

168
00:12:39,626 --> 00:12:44,540
Bởi vì điều đó có thể hữu ích khi tôi hiển thị thông tin.

169
00:12:44,540 --> 00:12:46,350
Điều này có thể không cần thiết,

170
00:12:46,350 --> 00:12:49,445
nhưng tôi chỉ làm điều đó chỉ vì lợi ích của sự hoàn chỉnh

171
00:12:49,445 --> 00:12:53,825
bởi vì nếu bạn đang truy xuất danh sách yêu thích cho một người dùng cụ thể,

172
00:12:53,825 --> 00:12:56,120
bạn tự động biết người dùng là ai,

173
00:12:56,120 --> 00:12:59,083
và người dùng cụ thể đó đang đăng nhập anyway.

174
00:12:59,083 --> 00:13:01,385
Nhưng trong trường hợp bạn muốn thông tin của người dùng,

175
00:13:01,385 --> 00:13:06,278
bạn có thể thực hiện thao tác này để giữ thông tin của người dùng đó.

176
00:13:06,278 --> 00:13:10,720
Vì vậy, chỉ để minh họa cho bạn rằng dân số của Mongo có thể được sử dụng,

177
00:13:10,720 --> 00:13:16,515
tôi đã minh họa không chỉ rằng trong danh sách các món ăn ở đây,

178
00:13:16,515 --> 00:13:22,820
thông tin về mỗi món ăn đã được đưa vào mảng này.

179
00:13:22,820 --> 00:13:24,907
Vì vậy, nếu bạn có một loạt các món ăn,

180
00:13:24,907 --> 00:13:30,385
thông tin của mỗi món ăn nên được đưa vào mảng này.

181
00:13:30,385 --> 00:13:34,670
Vì vậy, đây là một cách sử dụng dân số của Mongo

182
00:13:34,670 --> 00:13:38,555
mà bạn đang thấy để điền thông tin về món ăn.

183
00:13:38,555 --> 00:13:44,014
Chỉ bằng cách bạn thiết lập giản đồ cho mục yêu thích của bạn,

184
00:13:44,014 --> 00:13:47,840
điều này sẽ được tự động có thể cho bạn bằng cách sử dụng

185
00:13:47,840 --> 00:13:52,010
chỉ là dấu chấm cư trên danh sách các món ăn ở đây.

186
00:13:52,010 --> 00:13:54,103
Vì vậy, đó là phần thứ hai.

187
00:13:54,103 --> 00:13:59,213
Bây giờ chúng tôi có thể truy xuất phương pháp lấy món ăn,

188
00:13:59,213 --> 00:14:03,590
hãy để tôi chỉ cho bạn cách bạn có thể thực hiện một thao tác sau, nơi bạn có thể

189
00:14:03,590 --> 00:14:08,750
thêm một loạt các món ăn vào danh sách yêu thích của bạn.

190
00:14:08,750 --> 00:14:11,145
Bây giờ, quay trở lại bài đăng này,

191
00:14:11,145 --> 00:14:18,145
nếu bạn cần thêm không chỉ một mà là một tập hợp các món ăn vào danh sách yêu thích của bạn,

192
00:14:18,145 --> 00:14:19,850
bây giờ tại sao bạn muốn điều này?

193
00:14:19,850 --> 00:14:24,980
Có lẽ về phía khách hàng bạn có thể có một nút mà khi

194
00:14:24,980 --> 00:14:31,255
nhấp vào sẽ cho phép bạn kiểm tra đánh dấu một tập hợp các món ăn từ danh sách các món ăn,

195
00:14:31,255 --> 00:14:34,710
và sau đó thêm chúng vào một shot vào danh sách yêu thích của bạn.

196
00:14:34,710 --> 00:14:37,390
Vì vậy, để hỗ trợ loại hoạt động đó,

197
00:14:37,390 --> 00:14:42,295
bạn có thể muốn cho phép một bài đăng được thực hiện trên các mục yêu thích dấu gạch chéo ở đây.

198
00:14:42,295 --> 00:14:45,641
Bây giờ, khi bài đăng được thực hiện trên các mục yêu thích dấu gạch chéo, một lần nữa,

199
00:14:45,641 --> 00:14:48,959
bạn vẫn sẽ cần tiêu đề ủy quyền.

200
00:14:48,959 --> 00:14:51,460
Nhưng trong nội dung của thông điệp,

201
00:14:51,460 --> 00:14:57,493
chúng ta sẽ lưu trữ danh sách các món ăn như một mảng của định dạng này.

202
00:14:57,493 --> 00:15:01,490
Vì vậy, đây là một tài liệu JSON ở đây,

203
00:15:01,490 --> 00:15:04,340
vì vậy hãy để tôi đảm bảo rằng trong tiêu đề của tôi,

204
00:15:04,340 --> 00:15:08,107
loại nội dung đã có mặt ở đó.

205
00:15:08,107 --> 00:15:14,545
Bây giờ, tài liệu này sẽ

206
00:15:14,545 --> 00:15:18,735
chứa một mảng các món ăn như thế này.

207
00:15:18,735 --> 00:15:22,700
Vì vậy, mỗi món ăn sẽ được xác định bằng cách

208
00:15:22,700 --> 00:15:29,860
nói dấu chấm ID gạch dưới,

209
00:15:29,860 --> 00:15:34,835
và sau đó ở đây họ sẽ có ID món ăn,

210
00:15:34,835 --> 00:15:39,760
và vì vậy điều này sẽ không có gì ngoài một mảng các món ăn.

211
00:15:39,760 --> 00:15:46,630
Vì vậy, để tôi thêm hai món ăn vào danh sách yêu thích của tôi ở đây chỉ để minh họa cho điểm.

212
00:15:46,630 --> 00:15:51,726
Vì vậy, để tôi dán các ID từ một vài món ăn vào này.

213
00:15:51,726 --> 00:15:56,823
Vì vậy, khi bạn thực hiện một bài đăng trên máy chủ địa phương 3443/yêu thích,

214
00:15:56,823 --> 00:16:02,295
đây là cách bạn soạn nội dung của bài đăng ở đây.

215
00:16:02,295 --> 00:16:07,497
Vì vậy, mỗi món ăn mà bạn muốn thêm sẽ được bao gồm trong định dạng này ở đây.

216
00:16:07,497 --> 00:16:09,670
Bây giờ, khi bạn bao gồm chúng trong định dạng này,

217
00:16:09,670 --> 00:16:12,425
và sau đó đăng lên phía máy chủ đó,

218
00:16:12,425 --> 00:16:20,161
máy chủ đổi lại sẽ gửi lại danh sách cập nhật của mục yêu thích cho bạn.

219
00:16:20,161 --> 00:16:23,395
Vì vậy, khi bạn nhận được danh sách cập nhật các mục yêu thích từ phía máy chủ,

220
00:16:23,395 --> 00:16:26,300
bạn sẽ thấy rằng thông tin của người dùng đã có,

221
00:16:26,300 --> 00:16:34,685
nhưng lưu ý cách các món ăn yêu thích được lưu trữ trong mảng ID đối tượng món ăn này.

222
00:16:34,685 --> 00:16:38,320
Vì vậy, cái đầu tiên chúng tôi đã thêm vào trong hoạt động trước đó.

223
00:16:38,320 --> 00:16:39,485
Vì vậy, hai người còn lại,

224
00:16:39,485 --> 00:16:43,990
chúng tôi chỉ cần thêm vào danh sách các mục yêu thích của chúng tôi.

225
00:16:43,990 --> 00:16:47,545
Vì vậy, hai đối tượng ID cũng được thêm vào

226
00:16:47,545 --> 00:16:53,110
mảng món ăn của tôi trong tài liệu yêu thích của tôi ở đây.

227
00:16:53,110 --> 00:16:56,050
Vậy, anh đi đây. Vì vậy, đó là cách bạn phải thực hiện

228
00:16:56,050 --> 00:17:02,763
các bài yêu thích trên điểm cuối như thế này.

229
00:17:02,763 --> 00:17:05,340
Bây giờ, chúng ta hãy một lần nữa thực hiện một hoạt động get

230
00:17:05,340 --> 00:17:10,160
trên mục yêu thích chỉ để xem những gì các tính năng hoạt động get cho chúng tôi.

231
00:17:10,160 --> 00:17:12,600
Vì vậy, khi chúng tôi thực hiện thao tác GET,

232
00:17:12,600 --> 00:17:21,345
bạn sẽ ngay lập tức nhận thấy rằng trong tài liệu yêu thích trở lại,

233
00:17:21,345 --> 00:17:23,640
bạn có thông tin của người dùng ở

234
00:17:23,640 --> 00:17:25,065
đó, và sau đó xuống dưới đây,

235
00:17:25,065 --> 00:17:29,820
các món ăn là gì, nhưng một mảng tài liệu Json ở đây,

236
00:17:29,820 --> 00:17:32,670
mỗi một tương ứng với một món ăn.

237
00:17:32,670 --> 00:17:35,010
Bây giờ điều này được tự động thực hiện chăm sóc bởi các mongoose

238
00:17:35,010 --> 00:17:38,360
populate mà chúng tôi đã thực hiện ở phía máy chủ.

239
00:17:38,360 --> 00:17:44,525
Vì vậy, tất cả các thông tin này nên được tự động điền vào phía máy chủ.

240
00:17:44,525 --> 00:17:50,430
Vì vậy, đó là cách hoạt động bài đăng của bạn trên hai điểm cuối hoạt động.

241
00:17:50,430 --> 00:17:56,395
Bây giờ hãy để tôi chỉ cho bạn cách bạn sẽ thực hiện một thao tác DELETE.

242
00:17:56,395 --> 00:18:00,735
Bây giờ để xóa một món ăn cụ thể.

243
00:18:00,735 --> 00:18:08,193
Vì vậy, hãy để tôi thực hiện một thao tác xóa trên một điểm cuối cụ thể.

244
00:18:08,193 --> 00:18:13,095
Vì vậy, chúng tôi sẽ quay trở lại điểm cuối này,

245
00:18:13,095 --> 00:18:16,470
và sau đó để tôi chỉ sao chép một trong số này,

246
00:18:16,470 --> 00:18:18,985
và sau đó tôi sẽ xóa một trong các món ăn.

247
00:18:18,985 --> 00:18:22,585
Vì vậy, để thực hiện thao tác xóa trên một trong các món ăn,

248
00:18:22,585 --> 00:18:23,750
tất nhiên như bạn thấy,

249
00:18:23,750 --> 00:18:26,453
chúng tôi không cần cơ thể được nêu ra,

250
00:18:26,453 --> 00:18:29,485
và chúng tôi không cần nội dung ở đây.

251
00:18:29,485 --> 00:18:35,580
Tất cả những gì chúng ta cần làm là thực hiện một thao tác xóa trên điểm cuối này.

252
00:18:35,580 --> 00:18:43,125
Vì vậy, ở đây bạn thấy rằng tôi đang làm localhost:3443/favorites/ và sau đó ID món ăn.

253
00:18:43,125 --> 00:18:46,231
Và sau đó để tôi đăng bài này.

254
00:18:46,231 --> 00:18:51,760
Vì vậy, khi tôi xóa một món ăn cụ thể từ danh sách yêu thích của tôi,

255
00:18:51,760 --> 00:18:53,695
bạn ngay lập tức nhận thấy rằng

256
00:18:53,695 --> 00:19:01,555
danh sách yêu thích cập nhật của tôi được gửi trở lại phía khách hàng bởi máy chủ.

257
00:19:01,555 --> 00:19:03,010
Vì vậy, bạn có người sử dụng ở đây,

258
00:19:03,010 --> 00:19:06,220
nhưng lưu ý rằng trong mảng món ăn tôi chỉ có hai món ăn bây giờ.

259
00:19:06,220 --> 00:19:11,105
Cái mà tôi vừa xóa đã biến mất khỏi danh sách các món ăn đó.

260
00:19:11,105 --> 00:19:12,820
Vì vậy, nếu bạn thực hiện một GET ngay bây giờ,

261
00:19:12,820 --> 00:19:18,265
mảng món ăn của bạn sẽ liên tục đến các món ăn trong đó.

262
00:19:18,265 --> 00:19:24,635
Bây giờ, giả sử tôi thực hiện một DELETE trên mục yêu thích ở đây.

263
00:19:24,635 --> 00:19:30,565
Vì vậy, nếu tôi thực hiện DELETE trên điểm cuối yêu thích chính nó trực tiếp,

264
00:19:30,565 --> 00:19:34,540
sau đó những gì nó sẽ làm là xóa tất cả các mục yêu thích của tôi và

265
00:19:34,540 --> 00:19:39,096
cũng xóa tài liệu yêu thích của tôi hoàn toàn từ phía máy chủ.

266
00:19:39,096 --> 00:19:42,250
Vì vậy, hãy để tôi thực hiện thao tác xóa ở phía máy chủ,

267
00:19:42,250 --> 00:19:47,000
và sau đó nó sẽ trả lại thực tế là nó đã xóa tài liệu cụ thể này,

268
00:19:47,000 --> 00:19:49,675
vì vậy nó chỉ trả về tài liệu này anyway.

269
00:19:49,675 --> 00:19:54,670
Nhưng bây giờ nếu tôi thực hiện một hoạt động GET trong danh sách yêu thích của

270
00:19:54,670 --> 00:19:57,580
tôi, tôi sẽ lấy một null ở đó. Có

271
00:19:57,580 --> 00:20:00,880
nghĩa là tôi không có tài liệu này ở phía máy chủ.

272
00:20:00,880 --> 00:20:03,800
Vì vậy, các tài liệu yêu thích là hoàn toàn biến mất,

273
00:20:03,800 --> 00:20:09,352
khi tôi thực hiện thao tác DELETE trên cột máy chủ địa phương ba từ trước đây slash yêu thích.

274
00:20:09,352 --> 00:20:12,805
Bây giờ một lần nữa, khi tôi thêm một món ăn mới vào danh sách yêu thích của

275
00:20:12,805 --> 00:20:16,580
tôi, tài liệu yêu thích của tôi sẽ được thiết lập lại.

276
00:20:16,580 --> 00:20:21,880
Điều đó hoàn toàn tốt cho chúng tôi để hoạt động cùng.

277
00:20:21,880 --> 00:20:26,440
Vì vậy, với trình diễn này tôi đã cho bạn thấy

278
00:20:26,440 --> 00:20:32,680
tất cả các hoạt động khác nhau mà bạn cần phải thực hiện ở phía máy chủ của bạn.

279
00:20:32,680 --> 00:20:36,670
Tất cả các hoạt động khác nhau trên các điểm cuối tuyến đường khác nhau

280
00:20:36,670 --> 00:20:40,754
mà bạn cần thực hiện hoặc thực hiện ở phía máy chủ.

281
00:20:40,754 --> 00:20:42,265
Bây giờ bạn đã thấy

282
00:20:42,265 --> 00:20:47,720
tất cả các hoạt động khác nhau mà phía máy chủ nên hỗ trợ trên các mục yêu thích gạch chéo,

283
00:20:47,720 --> 00:20:48,895
và các mục yêu thích

284
00:20:48,895 --> 00:20:50,995
gạch chéo, gạch chéo món ăn ID điểm cuối,

285
00:20:50,995 --> 00:20:56,033
hãy để tôi liệt kê ba nhiệm vụ mà bạn cần phải hoàn thành trong nhiệm vụ này.

286
00:20:56,033 --> 00:21:03,340
Nhiệm vụ đầu tiên của khóa học là thực hiện giản đồ và mô hình yêu thích.

287
00:21:03,340 --> 00:21:09,995
Điều này bạn sẽ thực hiện trong thư mục mô hình trong một tập tin được gọi là NodeJS yêu thích.

288
00:21:09,995 --> 00:21:12,460
Ở đó bạn sẽ thực hiện giản đồ yêu thích.

289
00:21:12,460 --> 00:21:13,952
Hãy nhớ rằng giản đồ yêu thích sẽ lưu trữ

290
00:21:13,952 --> 00:21:19,720
tham chiếu đến ID đối tượng tài liệu của người dùng,

291
00:21:19,720 --> 00:21:26,212
và một mảng các món ăn tài liệu ID đối tượng.

292
00:21:26,212 --> 00:21:29,440
Đó là gợi ý lớn về cách bạn phải thiết

293
00:21:29,440 --> 00:21:33,355
kế lược đồ và mô hình cho mục yêu thích của bạn.

294
00:21:33,355 --> 00:21:39,190
Nhiệm vụ thứ hai trong nhiệm vụ của bạn là để thực hiện các

295
00:21:39,190 --> 00:21:46,555
hoạt động GET, POST và DELETE trên điểm cuối yêu thích gạch chéo.

296
00:21:46,555 --> 00:21:49,245
GET sẽ giúp bạn có được tất cả các danh sách yêu thích,

297
00:21:49,245 --> 00:21:52,225
dân cư tự động bởi dân cư của Mongo,

298
00:21:52,225 --> 00:21:58,360
POST nên chứa một danh sách các món ăn như được chỉ

299
00:21:58,360 --> 00:22:04,425
định trong định dạng mà tôi vừa chứng minh cho bạn trong nội dung của thông điệp POST.

300
00:22:04,425 --> 00:22:08,695
Và vì vậy một loạt các món ăn sẽ được thêm vào danh sách yêu thích của bạn,

301
00:22:08,695 --> 00:22:11,800
và DELETE hoạt động trên điểm cuối yêu thích gạch chéo sẽ

302
00:22:11,800 --> 00:22:16,215
xóa tài liệu yêu thích của bạn hoàn toàn từ phía máy chủ.

303
00:22:16,215 --> 00:22:22,225
Bây giờ nếu bạn thực hiện một hoạt động POST trên dấu gạch chéo yêu thích ID món ăn,

304
00:22:22,225 --> 00:22:27,405
sau đó món ăn cụ thể sẽ được thêm vào danh sách yêu thích của bạn.

305
00:22:27,405 --> 00:22:29,635
Nếu tài liệu yêu thích của bạn không tồn tại,

306
00:22:29,635 --> 00:22:32,455
rõ ràng bạn cần tạo tài liệu yêu thích đó.

307
00:22:32,455 --> 00:22:36,250
Vì vậy, đó cũng là một phần của hoạt động POST đó.

308
00:22:36,250 --> 00:22:39,760
Vì vậy, nếu tại bất kỳ thời điểm nào bạn thấy rằng tài liệu yêu thích không tồn tại,

309
00:22:39,760 --> 00:22:41,770
trước tiên bạn cần tạo tài liệu yêu thích và

310
00:22:41,770 --> 00:22:44,550
sau đó thêm món ăn này vào tài liệu yêu thích.

311
00:22:44,550 --> 00:22:47,155
Vì vậy, đó là một điểm quan trọng cũng cần lưu ý.

312
00:22:47,155 --> 00:22:51,305
Khi bạn thực hiện một bài đăng trên điểm cuối yêu thích dấu gạch chéo,

313
00:22:51,305 --> 00:22:53,290
nếu tài liệu yêu thích không tồn tại,

314
00:22:53,290 --> 00:22:58,150
bạn cần phải tạo một tài liệu yêu thích và sau đó thêm các món ăn vào tài liệu yêu thích của bạn.

315
00:22:58,150 --> 00:22:59,410
Nếu nó đã tồn tại,

316
00:22:59,410 --> 00:23:02,765
thì bạn chỉ cập nhật tài liệu yêu thích đó.

317
00:23:02,765 --> 00:23:08,480
Vì vậy, đây là một gợi ý nữa về cách bạn phải thực hiện các hoạt động POST.

318
00:23:08,480 --> 00:23:13,735
Nếu bạn thực hiện một thao tác DELETE trên các mục yêu thích gạch chéo dấu gạch chéo ID món ăn,

319
00:23:13,735 --> 00:23:18,640
sau đó món ăn cụ thể đó sẽ bị xóa khỏi danh sách yêu thích.

320
00:23:18,640 --> 00:23:23,125
Bây giờ trong việc thực hiện các hoạt động POST và DELETE,

321
00:23:23,125 --> 00:23:28,110
bạn nên đảm bảo rằng bạn sẽ không thêm bản sao vào ID món ăn.

322
00:23:28,110 --> 00:23:33,165
Vì vậy, trước khi bạn thêm một ID đối tượng món ăn vào danh sách các món ăn,

323
00:23:33,165 --> 00:23:39,490
luôn luôn kiểm tra để đảm bảo nếu ID món ăn đã tồn tại trong danh sách các món ăn.

324
00:23:39,490 --> 00:23:45,430
Bây giờ đây là nơi bạn có thể sử dụng các mảng IndexOf phương pháp để kiểm tra xem

325
00:23:45,430 --> 00:23:52,395
nếu một tài liệu ID đã tồn tại trong một mảng các tài liệu.

326
00:23:52,395 --> 00:23:56,725
Vì vậy, đó là một gợi ý lớn về cách bạn sẽ thực hiện phần đó.

327
00:23:56,725 --> 00:23:59,610
Và nhiệm vụ thứ ba tất nhiên là gắn

328
00:23:59,610 --> 00:24:05,725
bộ định tuyến yêu thích trên các điểm cuối yêu thích gạch chéo bằng cách cập nhật tệp app.js.

329
00:24:05,725 --> 00:24:08,490
Bản thân bộ định tuyến yêu thích sẽ được thực hiện

330
00:24:08,490 --> 00:24:13,710
trong thư mục route trong tệp favoriterouter.js.

331
00:24:13,710 --> 00:24:17,010
Vì vậy, với điều này tôi đã mô tả những gì bạn

332
00:24:17,010 --> 00:24:21,010
phải thực hiện trong nhiệm vụ thứ tư và cuối cùng.

333
00:24:21,010 --> 00:24:24,015
Và tôi hy vọng rằng nhiệm vụ này sẽ giúp bạn

334
00:24:24,015 --> 00:24:27,930
củng cố tất cả mọi thứ mà bạn đã học được trong khóa học,

335
00:24:27,930 --> 00:24:32,685
tất cả các cách từ thiết kế bộ định tuyến nhanh,

336
00:24:32,685 --> 00:24:40,720
làm MongoDB và cũng là lược đồ và mô hình của Mongo,

337
00:24:40,720 --> 00:24:45,095
và cũng thực hiện xác thực người dùng thích hợp.

338
00:24:45,095 --> 00:24:47,685
Và như tôi đã đề cập một lần nữa,

339
00:24:47,685 --> 00:24:52,965
chỉ có một người dùng được xác thực mới có quyền truy cập vào danh sách yêu thích của mình.

340
00:24:52,965 --> 00:24:55,920
Ngay cả các hoạt động GET chỉ có thể được thực hiện bởi

341
00:24:55,920 --> 00:25:00,750
một người dùng xác thực trên điểm cuối yêu thích gạch chéo.

342
00:25:00,750 --> 00:25:05,640
Và bạn sẽ chỉ lấy các mục yêu thích cho người dùng cụ thể đó.

343
00:25:05,640 --> 00:25:12,000
Bạn không thể cho phép người dùng khác truy cập vào mục yêu thích của người dùng khác.

344
00:25:12,000 --> 00:25:15,840
Vì vậy, một lần nữa, điều đó cũng cho bạn biết làm thế nào bạn phải thực

345
00:25:15,840 --> 00:25:20,890
hiện xác thực trên các điểm cuối tuyến đường khác nhau.

346
00:25:20,890 --> 00:25:27,595
Với điều này, tôi hoàn thành mô tả các nhiệm vụ trong nhiệm vụ thứ tư.

347
00:25:27,595 --> 00:25:31,790
Hãy vui vẻ hoàn thành nhiệm vụ này.