﻿1
00:00:01,210 --> 00:00:04,370
‫Instruktur: Dalam kuliah ini, mari kita terapkan cara yang

2
00:00:04,370 --> 00:00:07,853
‫lebih baik untuk menangkap kesalahan di semua fungsi asinkron kita.

3
00:00:09,310 --> 00:00:12,180
‫Jadi sekarang, di semua fungsi async

4
00:00:12,180 --> 00:00:15,750
‫kami, kami memiliki blok try catch ini, bukan?

5
00:00:15,750 --> 00:00:20,430
‫Jadi, ingat bagaimana kami menambahkan ke semua fungsi pegangan ini, coba

6
00:00:20,430 --> 00:00:23,930
‫ini dan kemudian blok tangkapan ini, oke?

7
00:00:23,930 --> 00:00:26,430
‫Dan semuanya memiliki ini karena

8
00:00:26,430 --> 00:00:28,900
‫semuanya adalah fungsi asinkron dan

9
00:00:28,900 --> 00:00:31,930
‫itulah cara kami biasanya menangkap kesalahan di

10
00:00:31,930 --> 00:00:33,863
‫dalam fungsi asinkron.

11
00:00:34,800 --> 00:00:37,100
‫Jadi menggunakan blok coba tangkap.

12
00:00:37,100 --> 00:00:41,170
‫Nah, itu benar-benar membuat kode kita terlihat berantakan dan tidak fokus

13
00:00:41,170 --> 00:00:44,740
‫sehingga tujuan dari metode createTour ini di sini, misalnya, adalah

14
00:00:44,740 --> 00:00:46,560
‫menjalankan kode ini saja.

15
00:00:46,560 --> 00:00:48,500
‫Kami sebenarnya tidak ingin dipusingkan

16
00:00:48,500 --> 00:00:49,934
‫dengan penanganan kesalahan

17
00:00:49,934 --> 00:00:53,450
‫di sini, jadi sekarang kami memiliki dua blok tambahan

18
00:00:53,450 --> 00:00:55,690
‫ini, coba dan tangkap, dan dengan

19
00:00:55,690 --> 00:00:57,900
‫itu muncul lekukan tambahan di sini

20
00:00:57,900 --> 00:01:01,730
‫dan lagi, ini benar-benar membuat kode kami terlihat tidak bersih.

21
00:01:01,730 --> 00:01:03,550
‫Ini benar-benar tidak fokus.

22
00:01:03,550 --> 00:01:05,940
‫Juga, kami memiliki banyak kode duplikat di

23
00:01:05,940 --> 00:01:07,830
‫sini karena di masing-masing penangan

24
00:01:07,830 --> 00:01:10,310
‫ini, kami memiliki blok tangkapan yang cukup mirip.

25
00:01:10,310 --> 00:01:12,250
‫Jadi dalam semua ini,

26
00:01:12,250 --> 00:01:14,690
‫yang kami lakukan hanyalah mengirimkan tanggapan ini.

27
00:01:14,690 --> 00:01:17,490
‫Dan tanggapan itu sebenarnya tidak akan dikirim

28
00:01:17,490 --> 00:01:20,900
‫ke sini melainkan di middleware penanganan kesalahan global kami,

29
00:01:20,900 --> 00:01:23,010
‫ingat, tapi itu topik lain.

30
00:01:23,010 --> 00:01:24,910
‫Untuk saat ini, apa

31
00:01:24,910 --> 00:01:27,170
‫yang saya coba fokuskan di sini

32
00:01:27,170 --> 00:01:30,840
‫adalah bahwa blok try catch di dalam setiap fungsi async kami

33
00:01:30,840 --> 00:01:34,010
‫tidak ideal dan sekarang mari kita coba untuk memperbaikinya.

34
00:01:34,010 --> 00:01:37,100
‫Dan solusinya pada dasarnya adalah mengeluarkan blok try catch

35
00:01:37,100 --> 00:01:39,890
‫dari sini dan meletakkannya di level yang lebih

36
00:01:39,890 --> 00:01:41,450
‫tinggi di fungsi lain.

37
00:01:41,450 --> 00:01:43,000
‫Jadi pada dasarnya apa yang

38
00:01:43,000 --> 00:01:44,470
‫akan kita lakukan

39
00:01:44,470 --> 00:01:49,326
‫adalah membuat sebuah fungsi, dan kemudian membungkus fungsi async ini ke dalam fungsi itu.

40
00:01:49,326 --> 00:01:50,630
‫Baiklah?

41
00:01:50,630 --> 00:01:53,333
‫Jadi izinkan saya menyebutnya catchAsync.

42
00:01:56,960 --> 00:02:00,290
‫Jadi catchAsync, dan saya menyebutnya seperti ini karena

43
00:02:00,290 --> 00:02:02,380
‫tujuan dari fungsi ini

44
00:02:02,380 --> 00:02:05,410
‫adalah untuk menangkap kesalahan asinkron kami.

45
00:02:05,410 --> 00:02:06,613
‫Sangat sederhana, bukan?

46
00:02:07,500 --> 00:02:09,840
‫Jadi ke dalam fungsi

47
00:02:09,840 --> 00:02:13,660
‫catchAsync ini, kita akan meneruskan sebuah fungsi, oke?

48
00:02:13,660 --> 00:02:16,820
‫Dan ingat, fungsi yang akan kita lewati pada

49
00:02:16,820 --> 00:02:19,030
‫dasarnya adalah yang ini.

50
00:02:19,030 --> 00:02:21,678
‫Jadi sekarang kita sedang mengerjakan contoh

51
00:02:21,678 --> 00:02:25,420
‫ini, fungsi yang akan kita berikan ke catchAsync adalah

52
00:02:25,420 --> 00:02:27,840
‫fungsi ini karena di sinilah kita

53
00:02:27,840 --> 00:02:30,033
‫ingin menangkap kesalahan asinkron.

54
00:02:31,030 --> 00:02:32,563
‫Jadi mari kita lakukan itu.

55
00:02:34,090 --> 00:02:39,090
‫Jadi fn, lalu bungkus seluruh fungsi itu ke sana.

56
00:02:40,950 --> 00:02:43,340
‫Jadi selanjutnya, yang harus kita lakukan adalah

57
00:02:43,340 --> 00:02:45,440
‫memanggil fungsi ini di sini.

58
00:02:46,670 --> 00:02:49,640
‫Jadi sebut saja, dan fungsi

59
00:02:49,640 --> 00:02:53,810
‫ini harus menerima permintaan, tanggapan, dan bahkan, selanjutnya.

60
00:02:53,810 --> 00:02:57,440
‫Jadi yang ini di sini seharusnya juga memiliki next

61
00:02:57,440 --> 00:02:58,860
‫dan semua yang

62
00:02:58,860 --> 00:03:01,260
‫lain, juga, karena ingat, kita memerlukan

63
00:03:01,260 --> 00:03:03,540
‫fungsi berikutnya untuk meneruskan kesalahan ke

64
00:03:03,540 --> 00:03:05,660
‫dalamnya sehingga kesalahan itu kemudian

65
00:03:05,660 --> 00:03:08,470
‫dapat ditangani di middleware penanganan kesalahan global.

66
00:03:08,470 --> 00:03:10,360
‫Jadi semua fungsi ini akan membutuhkan

67
00:03:10,360 --> 00:03:12,063
‫request, response, dan next.

68
00:03:12,950 --> 00:03:14,540
‫Tapi mari kita tinggalkan itu untuk nanti.

69
00:03:14,540 --> 00:03:17,090
‫Untuk saat ini, mari kita benar-benar fokus pada catchAsync kita di sini.

70
00:03:19,180 --> 00:03:22,120
‫Jadi fungsi ini di sini yang kami berikan ke

71
00:03:22,120 --> 00:03:24,290
‫async, yang sekarang disebut fn di

72
00:03:24,290 --> 00:03:26,040
‫sini, adalah fungsi asinkron.

73
00:03:26,040 --> 00:03:28,080
‫Dan ingat bahwa

74
00:03:28,080 --> 00:03:30,490
‫fungsi asinkron mengembalikan janji, bukan?

75
00:03:30,490 --> 00:03:33,500
‫Dan ketika ada kesalahan di dalam fungsi

76
00:03:33,500 --> 00:03:37,310
‫async, itu pada dasarnya berarti bahwa janji itu ditolak.

77
00:03:37,310 --> 00:03:40,160
‫Jadi di sini, di mana kita sebenarnya memanggil fungsi itu,

78
00:03:40,160 --> 00:03:41,893
‫kita kemudian dapat menangkap kesalahan itu.

79
00:03:43,790 --> 00:03:46,040
‫Jadi kami menangkapnya di sini,

80
00:03:46,040 --> 00:03:48,590
‫alih-alih menangkapnya di blok try catch.

81
00:03:48,590 --> 00:03:53,590
‫Jadi tangkap, dan kesalahan, lalu berikutnya, dan lewati kesalahan.

82
00:03:57,040 --> 00:03:58,160
‫Dan kita bisa

83
00:03:58,160 --> 00:04:01,810
‫menyederhanakan ini, tapi untuk sekarang mari kita hilangkan blok try

84
00:04:01,810 --> 00:04:05,103
‫catch di sini, jadi fokus saja pada bagian ini.

85
00:04:07,580 --> 00:04:08,920
‫Jadi hanya ini

86
00:04:08,920 --> 00:04:12,110
‫yang kita inginkan dan kita tidak lagi membutuhkan blok

87
00:04:12,110 --> 00:04:15,660
‫try catch, lagi, karena catch itu sekarang pada dasarnya dipindahkan ke

88
00:04:15,660 --> 00:04:17,113
‫sini, ke baris ini.

89
00:04:18,500 --> 00:04:20,350
‫Ini bukan lagi

90
00:04:20,350 --> 00:04:22,560
‫blok tangkap, karena di sini

91
00:04:22,560 --> 00:04:26,060
‫lebih mudah menggunakan janji bahwa fungsi fn kembali.

92
00:04:26,060 --> 00:04:29,640
‫Jadi sekali lagi, fungsi fn ini adalah fungsi ini,

93
00:04:29,640 --> 00:04:32,270
‫jadi yang kita berikan ke catchAsync,

94
00:04:32,270 --> 00:04:34,650
‫dan itu akan mengembalikan janji.

95
00:04:34,650 --> 00:04:37,100
‫Dan sebenarnya, saya perhatikan di sini

96
00:04:37,100 --> 00:04:40,110
‫bahwa ini, tentu saja, harus disebut catchAsync, oke?

97
00:04:40,110 --> 00:04:41,800
‫Dan kemudian fungsi yang

98
00:04:41,800 --> 00:04:45,447
‫kami berikan ke catchAsync, yang ini tentu saja fn.

99
00:04:45,447 --> 00:04:46,280
‫Baiklah?

100
00:04:46,280 --> 00:04:48,980
‫Jadi argumen yang kita lewati di sana.

101
00:04:48,980 --> 00:04:51,590
‫Sekarang sebenarnya ada dua masalah besar dengan

102
00:04:51,590 --> 00:04:54,180
‫cara ini diterapkan sekarang dan jadi

103
00:04:54,180 --> 00:04:57,240
‫cara ini, itu tidak akan berhasil sama sekali.

104
00:04:57,240 --> 00:04:59,340
‫Jadi yang pertama, pemanggilan fungsi

105
00:04:59,340 --> 00:05:03,213
‫ini di sini tidak memiliki cara untuk mengetahui permintaan, respons, dan selanjutnya.

106
00:05:04,300 --> 00:05:07,460
‫Kami tidak meneruskannya ke catchAsync di sini,

107
00:05:07,460 --> 00:05:09,300
‫jadi benar-benar tidak ada

108
00:05:09,300 --> 00:05:12,693
‫cara bagi fungsi untuk mengetahui nilai parameter ini.

109
00:05:13,658 --> 00:05:15,610
‫Dan kedua adalah bahwa

110
00:05:15,610 --> 00:05:18,473
‫di sini kita sebenarnya memanggil fungsi async.

111
00:05:20,290 --> 00:05:22,290
‫Dan untuk melihat ini sedikit lebih baik, mari

112
00:05:23,200 --> 00:05:24,873
‫kita singkirkan kode ini sepenuhnya.

113
00:05:26,370 --> 00:05:29,520
‫Jadi di sini kita memiliki catchAsync dan kita kemudian memanggilnya

114
00:05:29,520 --> 00:05:31,153
‫menggunakan tanda kurung tentunya.

115
00:05:32,350 --> 00:05:34,900
‫Dan kemudian di dalam catchAsync kami

116
00:05:34,900 --> 00:05:37,760
‫juga segera memanggil fungsi fn, dan bukan

117
00:05:37,760 --> 00:05:40,130
‫itu yang seharusnya berfungsi.

118
00:05:40,130 --> 00:05:43,060
‫Jadi createTour di sini harus benar-benar sebuah fungsi

119
00:05:43,060 --> 00:05:45,840
‫tetapi bukan hasil dari pemanggilan sebuah fungsi.

120
00:05:45,840 --> 00:05:47,810
‫Tapi itulah yang terjadi sekarang.

121
00:05:47,810 --> 00:05:49,940
‫Jadi sekarang catchAsync sedang

122
00:05:49,940 --> 00:05:54,310
‫dipanggil, yang kemudian memanggil fungsi ini di sini, oke?

123
00:05:54,310 --> 00:05:56,890
‫Dan sekali lagi, fungsi ini tidak boleh

124
00:05:56,890 --> 00:05:59,360
‫dipanggil, melainkan harus duduk di sini

125
00:05:59,360 --> 00:06:01,460
‫dan menunggu sampai ekspres memanggilnya.

126
00:06:01,460 --> 00:06:03,310
‫Dan express tentu saja

127
00:06:03,310 --> 00:06:05,400
‫akan memanggilnya segera setelah seseorang

128
00:06:05,400 --> 00:06:08,390
‫mencapai rute yang membutuhkan fungsi kontrol ini.

129
00:06:08,390 --> 00:06:11,980
‫Jadi solusinya adalah pada dasarnya membuat fungsi catchAsync

130
00:06:11,980 --> 00:06:15,030
‫mengembalikan fungsi lain yang kemudian akan

131
00:06:15,030 --> 00:06:18,060
‫ditugaskan ke createTour dan agar fungsi

132
00:06:18,060 --> 00:06:19,640
‫itu nantinya

133
00:06:19,640 --> 00:06:21,483
‫dapat dipanggil saat diperlukan.

134
00:06:23,294 --> 00:06:24,394
‫Jadi mari kita lakukan itu di sini.

135
00:06:25,590 --> 00:06:28,480
‫Jadi mari kita kembalikan fungsi anonim dan

136
00:06:28,480 --> 00:06:30,890
‫ingat bahwa ini adalah fungsi yang

137
00:06:30,890 --> 00:06:32,900
‫akan dipanggil oleh express.

138
00:06:32,900 --> 00:06:35,380
‫Jadi di sinilah kita

139
00:06:35,380 --> 00:06:38,423
‫kemudian menentukan permintaan, tanggapan, dan selanjutnya.

140
00:06:41,120 --> 00:06:43,763
‫Benar-benar hilang panah di sini.

141
00:06:47,230 --> 00:06:48,480
‫Dan baiklah.

142
00:06:48,480 --> 00:06:49,890
‫Dan itu sebenarnya.

143
00:06:49,890 --> 00:06:52,420
‫Itulah fungsi catchAsync kami.

144
00:06:52,420 --> 00:06:54,610
‫Ingat saja bagaimana saya mengatakan

145
00:06:54,610 --> 00:06:56,840
‫bahwa kita dapat menyederhanakannya dan itu

146
00:06:56,840 --> 00:06:59,110
‫hanya karena, dalam JavaScript, kita dapat menyederhanakannya

147
00:06:59,110 --> 00:07:01,777
‫seperti ini sehingga yang perlu kita sampaikan di

148
00:07:01,777 --> 00:07:04,020
‫sini adalah fungsinya, dan kemudian akan dipanggil

149
00:07:04,020 --> 00:07:06,810
‫secara otomatis dengan parameter yang diterima panggilan balik ini.

150
00:07:06,810 --> 00:07:09,263
‫Jadi sama saja dengan menulis selanjutnya.

151
00:07:11,500 --> 00:07:13,290
‫Jadi mari kita rekap di sini.

152
00:07:13,290 --> 00:07:16,490
‫Jadi untuk menghilangkan blok try catch kami, kami

153
00:07:16,490 --> 00:07:19,230
‫cukup membungkus fungsi asinkron kami

154
00:07:19,230 --> 00:07:23,010
‫di dalam fungsi catchAsync yang baru saja kami buat.

155
00:07:23,010 --> 00:07:26,160
‫Fungsi ini kemudian akan mengembalikan fungsi anonim

156
00:07:26,160 --> 00:07:27,690
‫baru, yang

157
00:07:27,690 --> 00:07:31,660
‫ini di sini, yang kemudian akan ditugaskan ke createTour.

158
00:07:31,660 --> 00:07:34,200
‫Jadi pada dasarnya fungsi

159
00:07:34,200 --> 00:07:36,940
‫inilah yang akan dipanggil segera setelah

160
00:07:36,940 --> 00:07:40,010
‫tur baru dibuat menggunakan handler createTour.

161
00:07:40,010 --> 00:07:42,960
‫Dan itulah mengapa ia memiliki tanda tangan yang

162
00:07:42,960 --> 00:07:47,520
‫sama persis di sini sebagai fungsi asinkron ini, dengan permintaan, tanggapan, dan berikutnya.

163
00:07:47,520 --> 00:07:49,740
‫Sekarang apa yang akan dilakukan fungsi ini

164
00:07:49,740 --> 00:07:51,320
‫di sini adalah ia akan

165
00:07:51,320 --> 00:07:53,440
‫memanggil fungsi yang kita lewati pada awalnya,

166
00:07:53,440 --> 00:07:54,990
‫jadi yang ini di

167
00:07:54,990 --> 00:07:58,270
‫sini, dan kemudian akan mengeksekusi semua kode yang ada di sana.

168
00:07:58,270 --> 00:08:00,670
‫Sekarang karena ini adalah fungsi async

169
00:08:00,670 --> 00:08:02,380
‫di sini, ia

170
00:08:02,380 --> 00:08:05,610
‫akan mengembalikan janji dan oleh karena itu, jika ada

171
00:08:05,610 --> 00:08:08,400
‫kesalahan dalam janji ini atau dengan kata

172
00:08:08,400 --> 00:08:11,090
‫lain, jika ditolak, kita kemudian dapat menangkap

173
00:08:11,090 --> 00:08:15,193
‫kesalahan yang terjadi menggunakan metode catch yaitu tersedia di semua janji.

174
00:08:16,560 --> 00:08:19,510
‫Dan pada akhirnya, metode tangkap inilah yang

175
00:08:19,510 --> 00:08:22,670
‫akan meneruskan kesalahan ke fungsi berikutnya yang kemudian

176
00:08:22,670 --> 00:08:24,780
‫akan membuatnya sehingga kesalahan

177
00:08:24,780 --> 00:08:27,943
‫kita berakhir di middleware penanganan kesalahan global kita.

178
00:08:28,890 --> 00:08:31,020
‫Jadi ini di sini, baris kode

179
00:08:31,020 --> 00:08:33,510
‫ini, benar-benar di mana semua keajaiban terjadi,

180
00:08:33,510 --> 00:08:35,440
‫dan ini, sebenarnya, yang

181
00:08:35,440 --> 00:08:38,893
‫memungkinkan kita untuk menyingkirkan blok tangkap yang kita miliki sebelumnya.

182
00:08:39,770 --> 00:08:40,603
‫Dan

183
00:08:40,603 --> 00:08:43,710
‫catatan: ini cukup rumit untuk membungkus kepala Anda

184
00:08:43,710 --> 00:08:46,460
‫dan jika itu tidak 100% jelas,

185
00:08:46,460 --> 00:08:48,943
‫jangan khawatir, itu tidak terlalu penting.

186
00:08:49,792 --> 00:08:53,010
‫Ini benar-benar hanya tentang mencari tahu bagaimana

187
00:08:53,010 --> 00:08:56,460
‫tepatnya kode asinkron bekerja di belakang layar dalam JavaScript.

188
00:08:56,460 --> 00:09:00,100
‫Jadi ini bukan tentang express atau Node.js. js, ini

189
00:09:00,100 --> 00:09:04,060
‫lebih tentang cara kerja kode asinkron.

190
00:09:04,060 --> 00:09:06,560
‫Lagi pula, jika sekarang kita membuat tur

191
00:09:06,560 --> 00:09:08,040
‫baru dan beberapa

192
00:09:08,040 --> 00:09:10,440
‫kesalahan terjadi, misalnya, dari input yang

193
00:09:10,440 --> 00:09:13,450
‫tidak valid, maka kesalahan itu tentu saja harus

194
00:09:13,450 --> 00:09:15,120
‫ditangkap di sini dalam

195
00:09:15,120 --> 00:09:18,270
‫fungsi tangkap ini, dan kemudian akan disebarkan ke middleware

196
00:09:18,270 --> 00:09:21,870
‫penanganan kesalahan kita dan agar seseorang kemudian akan mengirim kembali

197
00:09:21,870 --> 00:09:24,570
‫respons kesalahan yang diharapkan akan kami terima.

198
00:09:24,570 --> 00:09:26,973
‫Jadi sekarang mari kita benar-benar mencobanya.

199
00:09:28,080 --> 00:09:30,500
‫Jadi buat tur baru.

200
00:09:30,500 --> 00:09:32,030
‫Di sini kita memiliki

201
00:09:32,030 --> 00:09:35,223
‫tubuh, dan sekarang mari kita singkirkan salah satu bidang wajib ini.

202
00:09:36,440 --> 00:09:37,273
‫Baiklah.

203
00:09:37,273 --> 00:09:40,223
‫Dan itu akan memicu kesalahan, jadi mari kita lihat.

204
00:09:41,220 --> 00:09:44,920
‫Dan memang, validasi tur kami gagal, yang

205
00:09:44,920 --> 00:09:46,910
‫merupakan pesan kesalahan

206
00:09:46,910 --> 00:09:49,090
‫yang seharusnya kami terima.

207
00:09:49,090 --> 00:09:53,220
‫Sekarang di sini, Anda melihat 500 Internal Server Error ini,

208
00:09:53,220 --> 00:09:55,710
‫yang hanya karena fakta bahwa

209
00:09:55,710 --> 00:09:57,500
‫sekarang kesalahan yang disebarkan

210
00:09:57,500 --> 00:09:59,280
‫ke middleware penanganan

211
00:09:59,280 --> 00:10:02,110
‫kesalahan tidak memiliki kode status yang ditentukan

212
00:10:02,110 --> 00:10:05,190
‫dan jadi ingat default kami adalah 500

213
00:10:05,190 --> 00:10:08,310
‫dan itulah yang yang kemudian dikirim kembali.

214
00:10:08,310 --> 00:10:10,060
‫Dan tentu saja, kita perlu

215
00:10:10,060 --> 00:10:13,173
‫memperbaikinya dan kita akan melakukannya di kuliah selanjutnya dalam kursus ini.

216
00:10:14,730 --> 00:10:17,030
‫Untuk saat ini, yang penting

217
00:10:17,030 --> 00:10:20,420
‫di sini adalah yang pertama, fungsi catchAsync kami berfungsi

218
00:10:20,420 --> 00:10:23,700
‫sebagaimana dimaksud, dan kedua, bahwa kesalahan itu benar-benar

219
00:10:23,700 --> 00:10:26,900
‫disebarkan, sehingga ditangkap oleh middleware penanganan kesalahan global

220
00:10:26,900 --> 00:10:30,223
‫kami yang kemudian mengirimkan respons ini kembali ke klien.

221
00:10:32,520 --> 00:10:35,360
‫Sekarang mari kita lanjutkan dan ekspor fungsi

222
00:10:35,360 --> 00:10:38,010
‫tangkap ini ke dalam filenya sendiri.

223
00:10:38,010 --> 00:10:39,950
‫Jadi saya mengambilnya dari sini

224
00:10:39,950 --> 00:10:42,200
‫dan saya akan membuat file lain saja

225
00:10:42,200 --> 00:10:43,843
‫ke folder utilitas kami.

226
00:10:47,060 --> 00:10:51,123
‫Jadi tangkapAsync. js.

227
00:10:55,470 --> 00:11:00,470
‫Dan di sini, modul. ekspor harus hanya ini.

228
00:11:04,650 --> 00:11:09,450
‫Dan itu harus bekerja dengan baik.

229
00:11:09,450 --> 00:11:11,340
‫Kembali di pengontrol tur kami, kami

230
00:11:11,340 --> 00:11:13,373
‫tentu saja sekarang perlu mengimpor fungsi ini.

231
00:11:18,970 --> 00:11:21,840
‫Dan seperti biasa, kita perlu naik satu

232
00:11:22,840 --> 00:11:25,690
‫folder dan kemudian ke folder utilitas

233
00:11:25,690 --> 00:11:27,733
‫kita dan kemudian catchAsync.

234
00:11:30,810 --> 00:11:32,840
‫Baiklah, dan sekarang

235
00:11:32,840 --> 00:11:36,080
‫yang perlu kita lakukan adalah menyingkirkan semua

236
00:11:36,080 --> 00:11:40,593
‫blok catch ini dan membungkus semua handler ke dalam catchAsync.

237
00:11:42,210 --> 00:11:43,793
‫Jadi mari kita lakukan itu.

238
00:11:47,610 --> 00:11:52,610
‫Pertama lakukan pembungkusnya, lalu singkirkan balok-balok ini.

239
00:11:57,030 --> 00:12:00,220
‫Berikan save untuk memformat ulang, dan ini dia.

240
00:12:00,220 --> 00:12:03,310
‫Dan sekarang ini hanyalah proses mengulangi

241
00:12:03,310 --> 00:12:06,821
‫ini sampai semua tur, atau, maaf,

242
00:12:06,821 --> 00:12:09,633
‫sampai semua penangan selesai.

243
00:12:13,070 --> 00:12:14,760
‫Oke, cepat simpan.

244
00:12:14,760 --> 00:12:16,740
‫Yang ini sudah selesai.

245
00:12:16,740 --> 00:12:18,763
‫Selanjutnya adalah pembaruan.

246
00:12:26,920 --> 00:12:28,483
‫Dan hanya satu lagi yang hilang.

247
00:12:36,380 --> 00:12:37,870
‫Atau sebenarnya, itu tidak benar.

248
00:12:37,870 --> 00:12:40,403
‫Di bawah sana kami memiliki lebih banyak fungsi asinkron.

249
00:12:52,530 --> 00:12:57,203
‫Jadi kita akan menyingkirkan tangkapan dan percobaan di sini.

250
00:12:59,150 --> 00:13:01,100
‫Dan saya yakin ini adalah yang terakhir.

251
00:13:04,020 --> 00:13:05,483
‫Dan ya, memang begitu.

252
00:13:12,390 --> 00:13:15,000
‫Baiklah, sekarang satu hal lain yang

253
00:13:15,000 --> 00:13:19,040
‫perlu kita lakukan adalah menambahkan di samping semuanya di sini juga.

254
00:13:19,040 --> 00:13:20,793
‫Tapi tentu saja, tidak dalam huruf besar.

255
00:13:21,690 --> 00:13:22,960
‫Oke.

256
00:13:22,960 --> 00:13:25,480
‫Dan biarkan saya memilih semuanya di sini

257
00:13:28,170 --> 00:13:30,683
‫sehingga saya hanya perlu menulisnya sekali.

258
00:13:33,140 --> 00:13:35,943
‫Dan itu menambahkannya ke mereka semua.

259
00:13:38,390 --> 00:13:42,063
‫Dan sekarang saya kira kita sudah selesai dengan bagian ini.

260
00:13:43,270 --> 00:13:46,310
‫Mari kita cepat mengujinya lagi, bukan dengan yang ini,

261
00:13:46,310 --> 00:13:48,733
‫tapi dengan yang ini, tidak dengan yang

262
00:13:49,950 --> 00:13:52,000
‫ini juga, jadi kita selesai.

263
00:13:55,330 --> 00:13:57,140
‫Dan saya akan mencoba untuk mendapatkan

264
00:13:57,140 --> 00:14:01,870
‫tur tetapi dengan ID yang tidak valid, jadi mari kita lihat apa yang terjadi di sini.

265
00:14:01,870 --> 00:14:04,250
‫Dan memang, kami mendapatkan pesan kesalahan

266
00:14:04,250 --> 00:14:06,950
‫kami dan lagi dengan kode status 500,

267
00:14:06,950 --> 00:14:08,640
‫yang tidak benar, ingat,

268
00:14:08,640 --> 00:14:10,050
‫tapi kami

269
00:14:10,050 --> 00:14:11,930
‫akan mengurusnya di lain waktu.

270
00:14:11,930 --> 00:14:15,130
‫Jadi sekarang, izinkan saya menunjukkan kepada Anda

271
00:14:15,130 --> 00:14:19,920
‫bahwa di sinilah 500 berasal karena sekarang tidak ada kode status

272
00:14:19,920 --> 00:14:22,200
‫di dalam kesalahan yang kami

273
00:14:22,200 --> 00:14:24,310
‫dapatkan karena kesalahan ini, mereka

274
00:14:24,310 --> 00:14:27,940
‫sebenarnya berasal dari Mongoose dan jadi kami tidak

275
00:14:27,940 --> 00:14:29,730
‫memiliki cara untuk

276
00:14:29,730 --> 00:14:32,390
‫menambahkan status kode untuk kesalahan ini.

277
00:14:32,390 --> 00:14:35,370
‫Atau sebenarnya, tentu saja, kita bisa melakukannya, tapi

278
00:14:35,370 --> 00:14:37,950
‫itu akan lebih membingungkan dan kita

279
00:14:37,950 --> 00:14:40,330
‫akan menemukan cara lain nanti di

280
00:14:40,330 --> 00:14:41,443
‫bagian ini.

281
00:14:42,510 --> 00:14:45,840
‫Untuk saat ini, saya sangat senang dengan hasil yang kami dapatkan

282
00:14:45,840 --> 00:14:48,773
‫di sini dan itu saja untuk kuliah ini.

