﻿1
00:00:00,920 --> 00:00:02,913
‫-: Jadi seperti yang saya

2
00:00:02,913 --> 00:00:05,243
‫sebutkan di video terakhir ada tiga jenis

3
00:00:05,243 --> 00:00:07,525
‫kesalahan yang mungkin dibuat oleh Mongoose

4
00:00:07,525 --> 00:00:10,520
‫di mana kita perlu menandainya sebagai kesalahan operasional

5
00:00:10,520 --> 00:00:13,700
‫sehingga kami dapat mengirim kembali pesan kesalahan yang berarti

6
00:00:13,700 --> 00:00:15,383
‫kepada klien dalam produksi.

7
00:00:16,890 --> 00:00:21,290
‫Dan sekarang mari kita mulai dengan mensimulasikan ketiga kesalahan ini, oke?

8
00:00:21,290 --> 00:00:25,263
‫Jadi yang pertama adalah ketika kami mencoba ID yang tidak

9
00:00:26,240 --> 00:00:28,180
‫valid di sini, jadi

10
00:00:28,180 --> 00:00:30,950
‫hanya seperti ini, dan Mongoose tidak akan

11
00:00:30,950 --> 00:00:33,427
‫dapat mengubahnya menjadi ID MongoDB, ingat itu.

12
00:00:33,427 --> 00:00:36,799
‫Dan inilah kesalahan yang kami dapatkan sekarang, dan sebenarnya, di

13
00:00:36,799 --> 00:00:39,650
‫sini Anda dapat melihat semua jenis hal

14
00:00:39,650 --> 00:00:42,950
‫yang kami definisikan yang ingin kami lihat dalam produksi.

15
00:00:42,950 --> 00:00:47,010
‫Jadi seluruh objek kesalahan, lalu pesan kesalahan,

16
00:00:47,010 --> 00:00:50,590
‫dan juga tumpukan lengkap, oke?

17
00:00:50,590 --> 00:00:53,180
‫Jadi ini adalah contoh sempurna dari

18
00:00:53,180 --> 00:00:54,500
‫kesalahan operasional.

19
00:00:54,500 --> 00:00:57,160
‫Jadi ini adalah sesuatu yang sangat mungkin

20
00:00:57,160 --> 00:01:00,060
‫terjadi, jadi kami perlu mengirim kembali tanggapan yang

21
00:01:00,060 --> 00:01:02,380
‫berarti untuk menangani kesalahan ini.

22
00:01:02,380 --> 00:01:05,590
‫Dan ini adalah contoh sempurna dari kesalahan

23
00:01:05,590 --> 00:01:09,260
‫operasional yang sangat mungkin terjadi pada klien, jadi, kita

24
00:01:09,260 --> 00:01:11,740
‫perlu menanganinya sebagai satu, oke?

25
00:01:11,740 --> 00:01:14,607
‫Jadi, pada dasarnya dengan mengirimkan pesan kesalahan

26
00:01:14,607 --> 00:01:16,690
‫yang bagus alih-alih sesuatu seperti

27
00:01:16,690 --> 00:01:20,181
‫ini, yang tidak berarti apa-apa bagi klien mana pun, bukan?

28
00:01:20,181 --> 00:01:22,500
‫Oke, jadi tujuannya lagi di

29
00:01:22,500 --> 00:01:26,120
‫sini adalah untuk menandai kesalahan ini sebagai operasional,

30
00:01:26,120 --> 00:01:28,880
‫dan membuat pesan yang bermakna, oke?

31
00:01:28,880 --> 00:01:30,580
‫Tapi sebelum kita bisa

32
00:01:30,580 --> 00:01:32,620
‫melakukannya, mari kita lihat dua kesalahan

33
00:01:32,620 --> 00:01:36,260
‫Mongoose lainnya yang juga harus kita tandai sebagai operasional, oke?

34
00:01:36,260 --> 00:01:38,457
‫Jadi, mari Buat Tur

35
00:01:38,457 --> 00:01:43,236
‫Baru, dan yang akan saya lakukan adalah membuat nama duplikat.

36
00:01:43,236 --> 00:01:46,210
‫Jadi, mari kita salin yang ini di sini.

37
00:01:50,347 --> 00:01:52,503
‫Dan saya pikir semua nilai di

38
00:01:52,503 --> 00:01:54,780
‫sini benar, jadi mari kita coba sekarang.

39
00:01:54,780 --> 00:01:58,520
‫Dan memang disini kita mendapatkan error yang sudah kita

40
00:01:58,520 --> 00:02:00,210
‫ketahui yaitu duplikat

41
00:02:00,210 --> 00:02:01,960
‫key error karena kita sudah

42
00:02:01,960 --> 00:02:05,740
‫memiliki tour, atau dokumen dengan nama Forest Hiker, oke?

43
00:02:05,740 --> 00:02:07,440
‫Jadi sekali lagi, ini adalah kesalahan

44
00:02:07,440 --> 00:02:09,420
‫yang akan terjadi di beberapa titik,

45
00:02:09,420 --> 00:02:10,720
‫dan sekali lagi,

46
00:02:10,720 --> 00:02:13,650
‫itu tidak memiliki pesan kesalahan yang sangat berarti, bukan?

47
00:02:13,650 --> 00:02:16,243
‫Dan sekali lagi, kita perlu mengubahnya.

48
00:02:17,200 --> 00:02:19,954
‫Kemudian yang ketiga juga tentang validasi,

49
00:02:19,954 --> 00:02:23,980
‫jadi mari kita lakukan di sini di Update Tour.

50
00:02:23,980 --> 00:02:27,835
‫Jadi, katakanlah kita ingin memiliki peringkat Rata-rata enam, yang

51
00:02:27,835 --> 00:02:30,700
‫kita tahu tidak valid, bukan?

52
00:02:30,700 --> 00:02:33,430
‫Karena kami mengatakan bahwa maksimal peringkat Rata-rata

53
00:02:33,430 --> 00:02:34,960
‫bisa menjadi lima.

54
00:02:34,960 --> 00:02:36,720
‫Jadi mari kita

55
00:02:36,720 --> 00:02:40,891
‫lihat, dan memang, kita mendapatkan ValidationError ini, bukan?

56
00:02:40,891 --> 00:02:43,300
‫Jadi ini disebut ValidationError,

57
00:02:43,300 --> 00:02:47,600
‫dan memiliki objek error ini dengan semua errornya.

58
00:02:47,600 --> 00:02:49,400
‫Mari kita benar-benar menempatkan satu lagi di sini.

59
00:02:51,377 --> 00:02:53,183
‫Jadi katakanlah kesulitan,

60
00:02:55,229 --> 00:02:57,110
‫dan kemudian sesuatu yang lain,

61
00:02:57,110 --> 00:02:59,981
‫jadi yang tidak mudah, sedang, atau sulit,

62
00:02:59,981 --> 00:03:03,540
‫dan sekarang kita mendapatkan dua objek ini di sini.

63
00:03:03,540 --> 00:03:08,090
‫Satu untuk peringkat, dan satu untuk kesulitan, oke?

64
00:03:08,090 --> 00:03:09,800
‫Jadi ini adalah

65
00:03:09,800 --> 00:03:11,740
‫tiga kesalahan yang akan

66
00:03:11,740 --> 00:03:14,110
‫kita tandai sebagai operasional, dimulai dengan

67
00:03:14,110 --> 00:03:17,540
‫yang pertama, jadi pada dasarnya, tipe CastError, oke?

68
00:03:17,540 --> 00:03:20,250
‫Jadi, mari kita kembali ke sini, dan kita

69
00:03:20,250 --> 00:03:24,260
‫akan melakukannya lagi di sini, karena kita hanya ingin melakukan ini dalam produksi, oke?

70
00:03:24,260 --> 00:03:26,570
‫Dalam pengembangan, kami tidak peduli dengan semua ini.

71
00:03:26,570 --> 00:03:28,576
‫Yang ingin kami lakukan hanyalah

72
00:03:28,576 --> 00:03:30,910
‫melihat kesalahan kami sehingga pada dasarnya kami

73
00:03:30,910 --> 00:03:33,220
‫dapat memperbaikinya, tetapi dalam produksi, di sinilah

74
00:03:33,220 --> 00:03:36,110
‫kami ingin mengirim pesan kesalahan yang berarti kepada klien.

75
00:03:36,110 --> 00:03:40,690
‫Jadi, katakanlah jika err. name sama

76
00:03:40,690 --> 00:03:45,690
‫dengan CastError, jadi begitulah cara kita mengidentifikasi jenis

77
00:03:45,980 --> 00:03:48,400
‫kesalahan ini di sini

78
00:03:48,400 --> 00:03:51,000
‫yang baru saja kita

79
00:03:51,000 --> 00:03:55,300
‫bicarakan, karena memiliki nama CastError, oke?

80
00:03:55,300 --> 00:03:57,564
‫Jadi jika salah. namanya CastError,

81
00:03:57,564 --> 00:04:02,230
‫maka kita akan memanggil fungsi khusus yang akan kita

82
00:04:02,230 --> 00:04:03,880
‫buat dalam satu

83
00:04:03,880 --> 00:04:06,097
‫detik, yang disebut handleCastError.

84
00:04:10,750 --> 00:04:14,290
‫Dan kemudian saya juga akan mengatakan di sini DB

85
00:04:14,290 --> 00:04:18,320
‫untuk database, sehingga kita tahu bahwa ini terkait dengan database kita, oke?

86
00:04:18,320 --> 00:04:19,920
‫Dan beginilah cara kerjanya.

87
00:04:19,920 --> 00:04:21,470
‫Kami akan meneruskan

88
00:04:21,470 --> 00:04:23,683
‫kesalahan yang dibuat Mongoose ke dalam

89
00:04:24,720 --> 00:04:27,070
‫fungsi ini, jadi seperti ini, dan ini

90
00:04:27,070 --> 00:04:30,840
‫kemudian akan mengembalikan kesalahan baru yang dibuat tanpa kelas AppError, oke?

91
00:04:30,840 --> 00:04:33,930
‫Dan kesalahan itu kemudian akan ditandai sebagai operasional,

92
00:04:33,930 --> 00:04:36,120
‫karena ingat, semua AppErrors kami

93
00:04:36,120 --> 00:04:38,030
‫memiliki properti operasional yang

94
00:04:38,030 --> 00:04:40,523
‫disetel ke dua secara otomatis, bukan?

95
00:04:41,820 --> 00:04:46,390
‫Jadi ini akan mengembalikan kesalahan, jadi, mari kita simpan itu, oke?

96
00:04:46,390 --> 00:04:49,260
‫Dan begitu juga menyimpannya di err.

97
00:04:49,260 --> 00:04:51,050
‫Sekarang sama sekali bukan

98
00:04:51,050 --> 00:04:54,700
‫praktik yang baik untuk mengesampingkan argumen suatu fungsi, oke?

99
00:04:54,700 --> 00:04:57,930
‫Jadi kesalahan berasal dari fungsi err tengah ini, bukan?

100
00:04:57,930 --> 00:05:01,020
‫Jadi, dari sini, dan alih-alih melakukan itu,

101
00:05:01,020 --> 00:05:03,217
‫saya sebenarnya akan membuat

102
00:05:03,217 --> 00:05:06,516
‫salinan keras dari objek kesalahan itu, oke?

103
00:05:06,516 --> 00:05:09,760
‫Jadi let, dan saya menggunakan let, dan bukan const, karena

104
00:05:09,760 --> 00:05:11,700
‫tentu saja kita akan

105
00:05:11,700 --> 00:05:14,043
‫menetapkan kembali kesalahan baru, nanti di sini.

106
00:05:15,490 --> 00:05:18,820
‫Jadi, sebut saja kesalahan ini, bukan hanya

107
00:05:18,820 --> 00:05:22,250
‫err, yang merupakan nama normal dari kesalahan di Express.

108
00:05:22,250 --> 00:05:24,710
‫Dan sekali lagi, kita akan menggunakan

109
00:05:24,710 --> 00:05:29,133
‫trik kita di mana kita menggunakan destructuring dari kesalahan aslinya, oke?

110
00:05:30,930 --> 00:05:34,257
‫Jadi, mulai sekarang, kita akan menggunakan kesalahan ini alih-alih err.

111
00:05:35,620 --> 00:05:38,963
‫Jadi di sini, dan di sini, dan di sini.

112
00:05:41,720 --> 00:05:42,770
‫Baik?

113
00:05:42,770 --> 00:05:44,890
‫Jadi, sekarang mari kita lanjutkan

114
00:05:44,890 --> 00:05:47,223
‫dan benar-benar membuat fungsi ini di sini.

115
00:05:49,580 --> 00:05:52,883
‫Jadi mari kita taruh di sini di awal.

116
00:05:56,247 --> 00:05:57,413
‫Baik.

117
00:05:58,270 --> 00:06:00,680
‫Coba ingat bahwa ini menerima kesalahan,

118
00:06:00,680 --> 00:06:04,210
‫dan sekarang saya akan kembali hanya menyebutnya err seperti ini,

119
00:06:04,210 --> 00:06:07,320
‫karena sekali lagi itu semacam standar di Express.

120
00:06:07,320 --> 00:06:09,020
‫Dan untuk memulai,

121
00:06:09,020 --> 00:06:12,910
‫mari kita lihat kembali objek error di sini, oke?

122
00:06:12,910 --> 00:06:17,910
‫Jadi di sini, kita punya jalannya, dan kita juga punya nilainya, oke?

123
00:06:18,290 --> 00:06:21,280
‫Jadi jalur di sini pada dasarnya

124
00:06:21,280 --> 00:06:25,000
‫adalah nama bidang yang data inputnya salah format, oke?

125
00:06:25,000 --> 00:06:27,860
‫Dan nilai itu di sini kemudian yang ini,

126
00:06:27,860 --> 00:06:31,050
‫yang tentu saja, yang kita lakukan di masa lalu, oke?

127
00:06:31,050 --> 00:06:34,200
‫Jadi, ini mungkin tidak hanya terjadi pada ID, tetapi sebenarnya,

128
00:06:34,200 --> 00:06:36,450
‫untuk bidang apa pun yang kami

129
00:06:36,450 --> 00:06:39,370
‫kueri dengan nilai dalam format yang salah, oke?

130
00:06:39,370 --> 00:06:41,270
‫Jadi, sekarang mari kita

131
00:06:41,270 --> 00:06:43,330
‫buat string yang mengatakan bahwa kita

132
00:06:43,330 --> 00:06:48,330
‫memiliki ID yang tidak valid dengan nilai yang ini dalam kasus ini, oke?

133
00:06:48,360 --> 00:06:53,360
‫Jadi, itu jalur dan nilainya, oke?

134
00:06:53,530 --> 00:06:55,873
‫Jadi, mari kita buat pesan di sini, dan

135
00:06:59,780 --> 00:07:09,411
‫katakan Invalid err. jalannya salah.

136
00:07:09,411 --> 00:07:09,411
‫nilai.

137
00:07:13,870 --> 00:07:15,250
‫Oke?

138
00:07:15,250 --> 00:07:17,813
‫Jadi sekarang, kita cukup mengembalikan AppError kita sendiri.

139
00:07:18,990 --> 00:07:20,227
‫Oke?

140
00:07:20,227 --> 00:07:24,270
‫Jadi seperti yang saya sebutkan beberapa kali sekarang, oke?

141
00:07:24,270 --> 00:07:27,740
‫Jadi AppError, dan saya benar-benar harus memasukkannya di

142
00:07:27,740 --> 00:07:30,933
‫sini, atau meminta, karena saya belum melakukannya.

143
00:07:31,940 --> 00:07:35,633
‫Jadi const AppError sama dengan memerlukan, dan

144
00:07:39,150 --> 00:07:42,620
‫naik satu tingkat, lalu ke folder

145
00:07:42,620 --> 00:07:45,213
‫utilitas, dan kemudian appError.

146
00:07:46,350 --> 00:07:47,183
‫Ini dia.

147
00:07:48,150 --> 00:07:52,570
‫Jadi sekarang, ke dalam atau AppError, kami meneruskan pesan kami, dan

148
00:07:52,570 --> 00:07:56,860
‫kode status 400, yang merupakan singkatan dari Permintaan Buruk.

149
00:07:56,860 --> 00:07:59,040
‫Oke, jadi seperti ini, kami mengubah

150
00:07:59,040 --> 00:08:00,940
‫kesalahan aneh yang kami dapatkan

151
00:08:00,940 --> 00:08:02,640
‫dari Mongoose menjadi kesalahan

152
00:08:02,640 --> 00:08:04,110
‫operasional dengan pesan

153
00:08:04,110 --> 00:08:06,354
‫ramah yang bagus yang (tertawa) dapat

154
00:08:06,354 --> 00:08:07,187
‫dibaca

155
00:08:07,187 --> 00:08:09,343
‫oleh manusia yang sebenarnya, oke?

156
00:08:10,684 --> 00:08:13,270
‫Oke, satu hal terakhir yang perlu

157
00:08:13,270 --> 00:08:18,150
‫kita ubah di sini adalah juga mengatur yang ini di sini ke kesalahan, oke?

158
00:08:18,150 --> 00:08:21,750
‫Jadi, sekarang, jika kesalahan kita adalah CastError, maka

159
00:08:21,750 --> 00:08:24,770
‫kita akan meneruskan kesalahan ke fungsi ini

160
00:08:24,770 --> 00:08:27,790
‫yang akan mengembalikan AppError kita, jadi yang

161
00:08:27,790 --> 00:08:31,430
‫ini, dan itu yang kemudian akan dikirim ke

162
00:08:31,430 --> 00:08:34,180
‫klien menggunakan sendErrorProd kami, baik?

163
00:08:34,180 --> 00:08:36,123
‫Jadi, sekarang mari kita benar-benar mencobanya.

164
00:08:37,080 --> 00:08:39,060
‫Jadi di sini, dalam paket kami. json,

165
00:08:39,060 --> 00:08:43,627
‫kami memiliki skrip start:prod ini, jadi mari kita coba.

166
00:08:43,627 --> 00:08:48,627
‫Jadi, npm run start:prod, dan saya sebenarnya dapat melengkapi nama skrip npm

167
00:08:50,250 --> 00:08:54,580
‫ini secara otomatis menggunakan tab di sini di terminal, oke?

168
00:08:54,580 --> 00:08:56,420
‫Jadi, ini akan memulai

169
00:08:56,420 --> 00:08:59,640
‫proses dalam mode produksi, pada dasarnya, oke?

170
00:08:59,640 --> 00:09:01,060
‫Jadi, sekarang mari kita coba ini lagi.

171
00:09:01,060 --> 00:09:02,580
‫Jadi, jika Anda sekarang melakukan

172
00:09:02,580 --> 00:09:04,350
‫permintaan ini, kami akan mendapatkan kembali pesan

173
00:09:04,350 --> 00:09:07,500
‫kesalahan yang baru saja kami buat, karena saat ini, kami sedang dalam produksi.

174
00:09:07,500 --> 00:09:10,060
‫Dan memang, ini dia.

175
00:09:10,060 --> 00:09:12,530
‫Jadi kami memiliki valid, dan kemudian nama bidang,

176
00:09:12,530 --> 00:09:15,010
‫atau sebenarnya nama jalur, dan kemudian nilai yang

177
00:09:15,010 --> 00:09:15,843
‫kami masukkan.

178
00:09:17,130 --> 00:09:19,194
‫Jadi jika kami mencoba sesuatu

179
00:09:19,194 --> 00:09:21,730
‫yang berbeda, maka tentu saja, kami mendapatkan

180
00:09:21,730 --> 00:09:25,450
‫ini, dan tentu saja, juga kode 400 Permintaan Buruk kami.

181
00:09:25,450 --> 00:09:26,650
‫Oke, bagus.

182
00:09:26,650 --> 00:09:28,533
‫Jadi, yang ini sekarang ditangani.

183
00:09:28,533 --> 00:09:32,210
‫Di kuliah berikutnya, kita akan mengurus yang berikutnya,

184
00:09:32,210 --> 00:09:35,440
‫yaitu untuk duplikat nama bidang, oke?

185
00:09:35,440 --> 00:09:36,890
‫Jadi, sampai jumpa lagi.

