1
00:00:03,950 --> 00:00:09,405
الجزء الثاني من هذا التمرين يتعامل مع

2
00:00:09,405 --> 00:00:15,340
مختلف الحصول على وظيفة وحذف العمليات على المستندات الفرعية داخل الوثيقة.

3
00:00:15,340 --> 00:00:19,380
كما رأينا في المثال للأطباق،

4
00:00:19,380 --> 00:00:26,680
رأينا أن التعليقات يتم تضمينها داخل الطبق نفسه كوثيقة فرعية،

5
00:00:26,680 --> 00:00:31,680
بالطريقة التي عرفنا بها كل من مخطط التعليق ومخطط الطبق،

6
00:00:31,680 --> 00:00:35,150
ومن ثم تحديد نموذج الطبق من خلال

7
00:00:35,150 --> 00:00:38,880
تضمين مخطط التعليق في مخطط الطبق كمجموعة من تعليقات.

8
00:00:38,880 --> 00:00:43,580
ورأينا في التمرين السابق كيف يتم تضمين التعليقات داخل

9
00:00:43,580 --> 00:00:50,990
صفيف في شكل صفيف مستندات داخل كل مستند طبق.

10
00:00:50,990 --> 00:00:55,525
فكيف يمكننا إجراء تعديلات على التعليقات نفسها؟

11
00:00:55,525 --> 00:00:59,590
كيف نحصل على جميع قائمة التعليقات للطبق؟

12
00:00:59,590 --> 00:01:06,515
كيف نقوم بتعديل تعليق محدد في الطبق وما إلى ذلك؟

13
00:01:06,515 --> 00:01:10,820
لذلك هذا هو ما سنراه حول كيفية

14
00:01:10,820 --> 00:01:16,130
دعمهم باستخدام مختلف الحصول على وظيفة وضع وحذف العمليات على

15
00:01:16,130 --> 00:01:22,385
أطباق طبق مائل تعليقات طبق معرف مائل والأطباق

16
00:01:22,385 --> 00:01:29,935
مائل طبق معرف تعليقات مائلة مائلة تعليق نقاط نهاية API REST.

17
00:01:29,935 --> 00:01:32,885
للبدء في هذا التمرين،

18
00:01:32,885 --> 00:01:35,735
مرة أخرى، والعودة إلى جهاز توجيه الطبق، فقد

19
00:01:35,735 --> 00:01:44,170
شاهدوا بالفعل كيف نتعامل مع نقطة نهاية الخط المائل ونقطة نهاية معرف طبق مائل.

20
00:01:44,170 --> 00:01:50,300
الآن، الكثير من هذا العمل الذي نقوم به هنا مفيد بالفعل بالنسبة لنا،

21
00:01:50,300 --> 00:01:53,855
لذلك ما سأقوم به هو نسخ هذا الرمز،

22
00:01:53,855 --> 00:02:01,070
وبعد ذلك سنقوم بتحرير هذا الرمز بشكل مناسب للتعامل مع التعليقات ومعرف التعليق.

23
00:02:01,070 --> 00:02:04,250
لذلك أنا ذاهب لنسخ هذا الرمز بأكمله الذي لدينا

24
00:02:04,250 --> 00:02:08,750
هنا على حد سواء للخط المائل وخط الخط الذهبي معرف،

25
00:02:08,750 --> 00:02:14,300
وبعد ذلك سنقوم لصقه الحق أدناه هنا مرة أخرى.

26
00:02:14,300 --> 00:02:17,795
وبعد ذلك سندخل ونعدل كل واحد منهم

27
00:02:17,795 --> 00:02:21,470
لذلك رأينا أنه إذا نظرتم إلى الوراء،

28
00:02:21,470 --> 00:02:27,800
أول واحد هو التعامل مع شرطة مائلة التي سيتم تركيبها على نقطة نهاية أطباق مائلة.

29
00:02:27,800 --> 00:02:30,905
والقادم هو التعامل مع معرف طبق مائل.

30
00:02:30,905 --> 00:02:37,410
لذلك يجب أن يكون الثالث التعامل مع تعليقات شرطة مائلة للطبق المائل.

31
00:02:37,410 --> 00:02:39,060
حتى الذهاب إلى هنا،

32
00:02:39,060 --> 00:02:49,080
هذا الطريق طبق جهاز التوجيه الثالث سيكون شرطة مائلة لتعليقات الخط المائل.

33
00:02:49,080 --> 00:02:51,300
ثم آخر واحد، بطبيعة الحال،

34
00:02:51,300 --> 00:02:56,610
سيكون شرطة مائلة

35
00:02:56,610 --> 00:03:05,670
لتعليقات معرف الطبق ثم شرطة نقطية معرف التعليق.

36
00:03:05,670 --> 00:03:09,289
حتى الآن بعد أن قمنا بتحديث هذه المسارات هنا،

37
00:03:09,289 --> 00:03:12,380
والآن الخطوة التالية هي الذهاب وإصلاح

38
00:03:12,380 --> 00:03:16,310
التعليمات البرمجية في الحصول على وظيفة وضع وحذف العمليات هنا.

39
00:03:16,310 --> 00:03:22,025
لذلك سنبدأ مع نقطة النهاية لتعليقات الخط المائل للطبق.

40
00:03:22,025 --> 00:03:25,530
حتى في حالة طبق مائل ID تعليقات نقطة النهاية،

41
00:03:25,530 --> 00:03:31,425
لذلك سنفعل الأطباق تجد ولكن بدلا من القول أطباق تجد،

42
00:03:31,425 --> 00:03:38,100
ونحن سوف نفعل الأطباق تجد عن طريق

43
00:03:38,100 --> 00:03:45,595
ID وهكذا سوف نجد طبق معين أننا نبحث عن.

44
00:03:45,595 --> 00:03:53,335
حتى هنا، ونحن سوف نبحث عن أن req params طبق معرف،

45
00:03:53,335 --> 00:03:57,820
لذلك سوف نبحث أولا عن الطبق،

46
00:03:57,820 --> 00:04:02,900
وهكذا هذا سيعود طبق معين.

47
00:04:02,900 --> 00:04:06,865
لذلك عندما يعود هذا الطبق المحدد هنا،

48
00:04:06,865 --> 00:04:13,475
ثم ما سوف تحقق من الداخل هنا

49
00:04:13,475 --> 00:04:20,765
هو أنه إذا طبق لا يساوي فارغة.

50
00:04:20,765 --> 00:04:24,169
فمن الممكن جدا أن الطبق غير موجود،

51
00:04:24,169 --> 00:04:28,000
لذلك إذا كنا نبحث عن طبق معين مع معرف طبق،

52
00:04:28,000 --> 00:04:29,495
هذا الطبق قد لا يكون موجودا،

53
00:04:29,495 --> 00:04:35,360
لذلك نحن بحاجة للقلق حول التعامل مع هذا الوضع بالذات.

54
00:04:35,360 --> 00:04:39,590
لذلك دعونا التعامل مع هذا الجزء داخل هنا،

55
00:04:39,590 --> 00:04:43,985
وحتى إذا لم يكن فارغًا، فهذا يعني أن الطبق موجود.

56
00:04:43,985 --> 00:04:51,125
لذلك أنا ذاهب لقطع هذا خارج ومن ثم لصقه في هناك.

57
00:04:51,125 --> 00:04:54,150
ثم في هذه الحالة،

58
00:04:54,150 --> 00:04:56,940
لأن الطبق ليس فارغًا،

59
00:04:56,940 --> 00:05:02,300
لذلك سنعود رمز الحالة والرأس المحدد

60
00:05:02,300 --> 00:05:07,755
ثم هذا هنا سنعود تعليقات الطبق،

61
00:05:07,755 --> 00:05:13,685
لأنه يطلب منا إرجاع التعليقات فقط لهذا الطبق المحدد، لذلك سنقول،

62
00:05:13,685 --> 00:05:16,365
«أطباق تجد عن طريق ID،

63
00:05:16,365 --> 00:05:20,390
ثم req المعلمات معرف الطبق ثم طبق».

64
00:05:20,390 --> 00:05:25,540
وهكذا سنعود تعليقات الطبق هنا.

65
00:05:25,540 --> 00:05:30,320
خلاف ذلك، لذلك هذا هو الجزء الآخر.

66
00:05:30,320 --> 00:05:33,500
لذلك مما يعني أن الطبق غير موجود.

67
00:05:33,500 --> 00:05:35,295
حتى في هذه الحالة،

68
00:05:35,295 --> 00:05:43,095
ونحن سوف بناء خطأ هنا عن طريق قول أخطاء جديدة وبعد ذلك سنقول

69
00:05:43,095 --> 00:05:56,515
طبق req params معرف طبق لم يتم العثور عليه.

70
00:05:56,515 --> 00:05:59,840
لذلك لم يتم العثور على هذا الطبق معين،

71
00:05:59,840 --> 00:06:04,100
لذلك من الواضح أننا لن تكون قادرة على إعادة التعليقات للطبق غير موجود.

72
00:06:04,100 --> 00:06:05,560
لذلك في هذه الحالة،

73
00:06:05,560 --> 00:06:09,740
لذلك سنقوم بإنشاء كائن خطأ جديد ومن ثم سنقوم

74
00:06:09,740 --> 00:06:15,090
بتعيين الحالة في كائن الخطأ إلى 404.

75
00:06:15,090 --> 00:06:17,855
مرة أخرى، هذا هو 404 لم يتم العثور عليها،

76
00:06:17,855 --> 00:06:23,420
وبعد ذلك سنعود الخطأ التالي.

77
00:06:23,420 --> 00:06:24,990
الآن، لماذا نفعل هذا؟

78
00:06:24,990 --> 00:06:29,885
لأنه إذا قمت بإرجاع هذا كخطأ، كما تذكر،

79
00:06:29,885 --> 00:06:33,665
سيتم التعامل مع هذا من قبل ملف app.js الخاص بك،

80
00:06:33,665 --> 00:06:35,565
وذلك في ملف app.js،

81
00:06:35,565 --> 00:06:37,220
الحق في أسفل هنا،

82
00:06:37,220 --> 00:06:40,700
لدينا معالج الخطأ هنا.

83
00:06:40,700 --> 00:06:42,685
لذلك عندما يتعلق الأمر هنا،

84
00:06:42,685 --> 00:06:46,560
سيؤدي ذلك إلى تعيين الباقي أو الحالة إلى حالة نقطة الخطأ،

85
00:06:46,560 --> 00:06:48,410
والتي قمنا بتعيينها إلى 404،

86
00:06:48,410 --> 00:06:49,900
بحيث يتم إرجاعها،

87
00:06:49,900 --> 00:06:56,720
ومن ثم سيأخذ هذا الخطأ ببساطة ثم يعرض هذا الخطأ هنا.

88
00:06:56,720 --> 00:07:01,020
بحيث سوف تأخذ الرعاية من تقديم الأخطاء.

89
00:07:01,020 --> 00:07:07,080
لذلك هذا سيعود رسالة الخطأ مرة أخرى إلى عميلنا.

90
00:07:07,080 --> 00:07:09,490
هذا هو ما نستدعيه هنا،

91
00:07:09,490 --> 00:07:11,090
لذلك إذا كان الطبق غير موجود،

92
00:07:11,090 --> 00:07:15,475
سنقوم فقط بإرجاع هذا الخطأ هنا من عملية الحصول على.

93
00:07:15,475 --> 00:07:19,475
الآن، للنشر في حالة المشاركة،

94
00:07:19,475 --> 00:07:24,920
نتوقع أن يتم

95
00:07:24,920 --> 00:07:30,980
إرجاعها معرف الطبق ثم سنبحث عن الطبق،

96
00:07:30,980 --> 00:07:35,840
وبعد ذلك سنأخذ مجموعة التعليقات

97
00:07:35,840 --> 00:07:41,555
من الجسم ثم ندفعها إلى الطبق هناك.

98
00:07:41,555 --> 00:07:46,375
لذلك سنقول أطباق، مرة أخرى، هنا،

99
00:07:46,375 --> 00:07:52,750
سيكون علينا أن نفعل البحث عن طريق معرف لأننا نبحث عن طبق معين هنا.

100
00:07:52,750 --> 00:07:59,485
لذلك بالنسبة للوظيفة، سنقول العثور على طبق من قبل معرف ثم طبق،

101
00:07:59,485 --> 00:08:01,750
وحتى داخل هنا،

102
00:08:01,750 --> 00:08:04,060
إذا كان الطبق موجودا،

103
00:08:04,060 --> 00:08:06,555
ثم سوف نتعامل مع الطبق بشكل مناسب.

104
00:08:06,555 --> 00:08:10,360
إذا لم يكن كذلك، ثم سيكون لدينا لإرسال رسالة الخطأ.

105
00:08:10,360 --> 00:08:16,730
لذلك اسمحوا لي أن نسخ هذا الجزء من الحصول وبعد ذلك،

106
00:08:16,730 --> 00:08:20,710
ونحن سوف تحل محل هذا هنا.

107
00:08:22,130 --> 00:08:25,155
لذلك من الواضح، إذا كان الطبق غير موجود،

108
00:08:25,155 --> 00:08:27,165
ثم نحن ذاهبون للعودة هذا الخطأ هنا،

109
00:08:27,165 --> 00:08:31,035
ولكن إذا كان الطبق موجودا، في هذه الحالة،

110
00:08:31,035 --> 00:08:35,930
وسوف نعود رمز الحالة 200 رأس مجموعة.

111
00:08:35,930 --> 00:08:41,835
ولكن قبل أن نعيد القيمة،

112
00:08:41,835 --> 00:08:50,400
ما سأفعله هو أن أقول تعليقات طبق،

113
00:08:50,400 --> 00:08:55,020
لذلك نحن نشر مجموعة جديدة من التعليقات للطبق.

114
00:08:55,130 --> 00:09:02,790
لذلك سنقول تعليقات طبق دفع الجسم req.

115
00:09:02,790 --> 00:09:07,785
لأن نص الرسالة يحتوي على جميع التعليقات التي تحتاج إلى دفعها هنا،

116
00:09:07,785 --> 00:09:13,890
وبعد ذلك، سنقول، «حفظ الطبق».

117
00:09:13,890 --> 00:09:22,010
وحتى إذا كان حفظ يعود بنجاح مع الطبق هنا،

118
00:09:22,010 --> 00:09:27,030
لذلك سوف نرسل الطبق المحدث من هنا.

119
00:09:32,350 --> 00:09:40,600
لذلك هذا الجزء حيث نحن بناء رمز الحالة،

120
00:09:40,600 --> 00:09:49,750
وسوف نفعل ذلك داخل هنا وبعد ذلك سوف نرسل مرة أخرى

121
00:09:54,320 --> 00:10:00,875
Res.json والطبق الذي حصلنا عليه هنا.

122
00:10:00,875 --> 00:10:04,885
لذلك، ما نقوم به هو أننا حفظ الطبق هنا.

123
00:10:04,885 --> 00:10:11,430
نحن أولا دفع التعليقات في الطبق هناك،

124
00:10:11,430 --> 00:10:14,420
ومجموعة جديدة من التعليقات في الطبق هنا،

125
00:10:14,420 --> 00:10:19,210
ومن ثم نحن حفظ الطبق المحدث هنا.

126
00:10:19,210 --> 00:10:20,825
ثم بعد الحفظ،

127
00:10:20,825 --> 00:10:29,070
سنقوم بإرجاع الطبق المحدث مرة أخرى إلى المستخدم هنا.

128
00:10:29,290 --> 00:10:32,125
ثم إذا كان هناك خطأ،

129
00:10:32,125 --> 00:10:37,370
ثم سوف نتعامل مع الخطأ تماما كما فعلنا هنا.

130
00:10:38,570 --> 00:10:41,420
إذا لم يكن الطبق موجودًا، بالطبع،

131
00:10:41,420 --> 00:10:45,825
سنقوم بإرجاع الخطأ قائلا إن الطبق غير موجود.

132
00:10:45,825 --> 00:10:47,475
لذلك، هذا هو لهذا المنصب.

133
00:10:47,475 --> 00:10:49,100
عملية بوت، بطبيعة الحال،

134
00:10:49,100 --> 00:10:51,680
غير معتمدة على الأطباق.

135
00:10:51,680 --> 00:10:53,140
لذلك، في هذه الحالة،

136
00:10:53,140 --> 00:10:56,210
ونحن نحاول إجراء عملية بوت

137
00:10:56,210 --> 00:11:06,550
على الأطباق، req.params.Dishid/التعليقات.

138
00:11:08,370 --> 00:11:10,980
لذلك، هذا غير مسموح به.

139
00:11:10,980 --> 00:11:13,415
لذا، هذا ما نقوله لعملية PUT.

140
00:11:13,415 --> 00:11:15,545
لعملية الحذف،

141
00:11:15,545 --> 00:11:19,130
ما سنفعله هو أولاً العثور على الطبق.

142
00:11:19,130 --> 00:11:22,275
لذلك، سوف نقول طبق. findbyid.

143
00:11:22,275 --> 00:11:27,785
لذلك، حذف يعني أننا إزالة جميع التعليقات من الطبق،

144
00:11:27,785 --> 00:11:28,850
وليس الطبق نفسه،

145
00:11:28,850 --> 00:11:31,540
ولكن نحن إزالة جميع التعليقات من الطبق.

146
00:11:31,540 --> 00:11:33,495
لذلك، في هذه الحالة،

147
00:11:33,495 --> 00:11:41,695
ما كنا في نهاية المطاف القيام به هو كما يلي: حتى إذا كان الطبق ليست فارغة،

148
00:11:41,695 --> 00:11:47,345
أذكر أننا بحاجة إلى التعامل معها بالقول ثم طبق.

149
00:11:47,345 --> 00:11:49,400
إذا لم يكن الطبق

150
00:11:49,400 --> 00:11:53,080
فارغًا، فسنقوم بإزالة جميع التعليقات من الطبق.

151
00:11:53,080 --> 00:11:57,480
لذلك، سأقوم بنسخ هذا الرمز ثم لصقه هنا،

152
00:11:57,480 --> 00:12:00,880
وبعد ذلك سنقوم بتحرير هذا الرمز، ثم حذفه.

153
00:12:00,880 --> 00:12:06,070
سنرى ما إذا كان الطبق غير فارغ،

154
00:12:06,070 --> 00:12:10,085
ثم سيعودون الطبق هنا.

155
00:12:10,085 --> 00:12:12,495
لذا، إذا لم يكن الطبق فارغًا،

156
00:12:12,495 --> 00:12:16,700
فإن وات سنتعامل مع هذا هو كما يلي.

157
00:12:16,700 --> 00:12:24,975
لذلك، سيكون لدينا للذهاب في وحذف كل من التعليقات.

158
00:12:24,975 --> 00:12:36,380
لذلك، سنقول ل (فار ط =

159
00:12:36,380 --> 00:12:49,940
(dish.comments.length -1) إ> = 0؛ ط -).

160
00:12:49,940 --> 00:12:55,860
لذلك، نحن نذهب حرفيا في وإزالة كل تعليق.

161
00:12:55,860 --> 00:12:56,380
لذلك، سنقول

162
00:12:56,380 --> 00:13:11,370
dish.comments.id (dish.comments [i]. _id).

163
00:13:11,370 --> 00:13:15,060
نحن سَنَقُولُ إزالة.

164
00:13:15,060 --> 00:13:19,490
لذلك، نحن ذاهبون إلى إزالة كل من الأطباق،

165
00:13:19,490 --> 00:13:22,520
واحد تحت كل من التعليقات واحدا تلو الآخر.

166
00:13:23,420 --> 00:13:26,910
لذلك، هذا هو ما سنفعله للتعليقات.

167
00:13:26,910 --> 00:13:30,600
ثم مرة واحدة لدينا إزالة جميع التعليقات للطبق،

168
00:13:30,600 --> 00:13:34,800
ثم سيكون لدينا لحفظ الطبق ومن ثم إرسالها مرة أخرى.

169
00:13:34,800 --> 00:13:38,345
لذلك، في وقت سابق أيضا عندما نقوم بتعديل الطبق،

170
00:13:38,345 --> 00:13:39,760
وهذا ما فعلناه هنا.

171
00:13:39,760 --> 00:13:43,250
لذلك، أنا ذاهب لنسخ هذا الجزء،

172
00:13:43,610 --> 00:13:46,415
ومن ثم تأتي إلى هنا، ومن

173
00:13:46,415 --> 00:13:52,060
ثم أقول dish.save،

174
00:13:52,060 --> 00:13:57,085
ثم سنعود الطبق

175
00:13:57,085 --> 00:14:02,470
هنا للإشارة إلى الطبق المحدث الذي يتم إرجاعه هنا.

176
00:14:02,470 --> 00:14:05,130
لذلك، هذه هي الطريقة التي سوف نحذف التعليقات.

177
00:14:05,130 --> 00:14:07,225
لذلك، هنا نحن ذاهبون،

178
00:14:07,225 --> 00:14:10,800
والآن لا توجد طريقة سهلة لسحب حرفيا

179
00:14:10,800 --> 00:14:15,330
جميع التعليقات من المصفوفة عندما يكون لديك وثيقة فرعية.

180
00:14:15,330 --> 00:14:19,680
لذلك، عليك أن تذهب في وحذف كل وثيقة فرعية واحدا تلو الآخر.

181
00:14:19,680 --> 00:14:22,720
لذلك، هذا هو ما أفعله في هذا لحلقة هنا.

182
00:14:22,720 --> 00:14:27,500
لذلك، أنا أقول ل (فار ط = dish.comments.length).

183
00:14:27,500 --> 00:14:31,270
لذلك، أنا أبحث في مجموعة من التعليقات ثم بدءا من

184
00:14:31,270 --> 00:14:35,430
التعليق الأخير في هذا الصفيف على طول الطريق إلى التعليق الأول،

185
00:14:35,430 --> 00:14:38,940
وأنا ذاهب في ثم حذف التعليق عن طريق التعليق هنا باستخدام

186
00:14:38,940 --> 00:14:42,905
عملية الإزالة على المستند الفرعي.

187
00:14:42,905 --> 00:14:47,320
لذا، فإن الطريقة التي سنصل إليها إلى مستند ثانوي هي

188
00:14:47,320 --> 00:14:53,720
بقول الطبق ثم التعليقات هي اسم الحقل ثم أقول معرف هنا.

189
00:14:53,720 --> 00:14:56,259
لذلك، هذه هي الطريقة التي يمكنك الوصول إليها إلى مستند ثانوي،

190
00:14:56,259 --> 00:15:02,115
وداخل هنا سوف تحدد معرف المستندات الفرعية التي تحاول الوصول إليها.

191
00:15:02,115 --> 00:15:06,310
لذا، سيعطيك هذا الأمر برمته الوصول إلى المستند الفرعي،

192
00:15:06,310 --> 00:15:09,670
ثم نسمي طريقة الإزالة على المستند الفرعي،

193
00:15:09,670 --> 00:15:14,320
بحيث تتم إزالة المستند الفرعي من صفيف المستندات الفرعية.

194
00:15:14,320 --> 00:15:17,980
ثم بعد ذلك، بعد أن حذفنا جميع التعليقات،

195
00:15:17,980 --> 00:15:21,075
سأحفظ التغييرات وهذا كل شيء.

196
00:15:21,075 --> 00:15:25,840
لذلك، سيتم حذف جميع تعليقاتي من ثم الطبق.

197
00:15:25,840 --> 00:15:33,335
الآن، سوف نتعامل مع نقطة النهاية التالية التي هي الموقوقة/: CommentID.

198
00:15:33,335 --> 00:15:35,460
لذلك، في هذه الحالة،

199
00:15:35,460 --> 00:15:42,410
سنبدأ أولاً بتحديد موقع الطبق ثم بعد تحديد موقع الطبق،

200
00:15:42,410 --> 00:15:47,460
ثم علينا التأكد من وجود الطبق،

201
00:15:47,460 --> 00:15:49,310
ثم نتعامل مع الطبق.

202
00:15:49,310 --> 00:15:52,320
لذلك، أنا ذاهب لحذف هذا الجزء،

203
00:15:52,320 --> 00:15:59,350
وبعد ذلك سوف نقول دعونا نسخ هذا الجزء من بوابة التي كان لدينا في وقت سابق

204
00:16:09,140 --> 00:16:13,650
لأننا بحاجة إلى أن تكون قادرة على التعامل مع الوضع

205
00:16:13,650 --> 00:16:20,095
حيث إما الطبق غير موجود أو الطبق موجود ولكن التعليقات غير موجودة،

206
00:16:20,095 --> 00:16:23,870
أو الطبق نفسه غير موجود.

207
00:16:23,870 --> 00:16:28,280
لذلك، هناك ثلاثة شروط أحتاج إلى اختبارها.

208
00:16:28,280 --> 00:16:32,650
لذلك، سنقول إذا (طبق! =

209
00:16:32,650 --> 00:16:51,180
نول && dish.comments.id (Req.params.commentid)! =

210
00:16:51,180 --> 00:17:00,545
null، مما يعني أن الطبق نفسه موجود وكذلك التعليقات موجودة في الطبق،

211
00:17:00,545 --> 00:17:05,560
عندها فقط يمكننا إرسال تعليق محدد تم طلبه.

212
00:17:05,560 --> 00:17:07,680
لذلك، في هذه الحالة،

213
00:17:07,680 --> 00:17:14,525
سوف نقول StatusCode هو 200، تطبيق seteader json،

214
00:17:14,525 --> 00:17:19,895
ومن ثم هنا سوف نرسل dish.comments

215
00:17:19,895 --> 00:17:25,300
مرة أخرى، ونحن نرسل هذا التعليق معين.

216
00:17:25,300 --> 00:17:29,350
لذلك، هذا هو التعليق المحدد الذي نرسل ماكس.

217
00:17:29,350 --> 00:17:37,925
لذلك، سيسمح لنا هذا باسترداد تعليق محدد من مجموعة التعليقات.

218
00:17:37,925 --> 00:17:46,895
الآن، سنقول آخر إذا طبق يساوي لاغية.

219
00:17:46,895 --> 00:17:49,180
وبالتالي فإن الأطباق فارغة،

220
00:17:49,180 --> 00:17:55,830
ثم بالطبع سيكون لدينا للإشارة إلى أن الطبق غير موجود

221
00:17:55,830 --> 00:18:02,105
والشرط الأخير هو إذا كان التعليق نفسه فارغ.

222
00:18:02,105 --> 00:18:08,360
لذلك، في هذه الحالة أيضا لا بد لي من الإشارة إلى أن التعليق نفسه غير موجود،

223
00:18:08,360 --> 00:18:13,130
وهذا معرف تعليق معين غير موجود حتى في هذه الحالة،

224
00:18:13,130 --> 00:18:15,355
سأقول

225
00:18:15,355 --> 00:18:23,930
تعليق خطأ جديد req.params.commentid لم يتم العثور عليه.

226
00:18:23,930 --> 00:18:25,520
إذن، ثلاثة شروط

227
00:18:25,520 --> 00:18:31,045
أولاً، عليك التأكد أولاً من وجود الطبق وتعليقات الطبق موجودة،

228
00:18:31,045 --> 00:18:34,285
إذا فعلوا ذلك، يمكنني إرسال تعليق محدد،

229
00:18:34,285 --> 00:18:41,505
إن لم يكن كذلك، إذا لم يكن الطبق نفسه غير موجود على جانب الخادم في قاعدة البيانات،

230
00:18:41,505 --> 00:18:44,340
فسأشير إلى أن الطبق غير موجود ولكن إذا كان

231
00:18:44,340 --> 00:18:47,300
الطبق موجود ولكن التعليق غير موجود،

232
00:18:47,300 --> 00:18:50,870
ثم سأرسل الرسالة التي تقول أن التعليق غير موجود.

233
00:18:50,870 --> 00:18:55,495
لذلك، لاحظ أن لديهم للتعامل مع جميع الشروط الممكنة هنا ل GET.

234
00:18:55,495 --> 00:18:57,500
بالنسبة لـ POST بالطبع،

235
00:18:57,500 --> 00:19:01,895
لا يتم دعم عملية النشر على نقطة النهاية هذه،

236
00:19:01,895 --> 00:19:04,060
لذلك سنقول

237
00:19:08,900 --> 00:19:18,100
التعليقات مائلة req.params.Communtid.

238
00:19:18,950 --> 00:19:26,205
لذلك، لا يتم دعم عملية POST على معرف هذا التعليق. الآن ماذا عن PUT؟

239
00:19:26,205 --> 00:19:31,360
PUT هي حالة أكثر إثارة للاهتمام هنا.

240
00:19:31,360 --> 00:19:33,550
لذلك، مرة أخرى حتى بالنسبة للوضع،

241
00:19:33,550 --> 00:19:40,205
يجب أن أتعامل مع كل هذه الشروط الممكنة،

242
00:19:40,205 --> 00:19:49,150
لذلك سأنظر إلى هذا وأقول، حسنًا لهذا،

243
00:19:49,370 --> 00:19:55,045
دعني أنسخ هذا الرمز بأكمله لأن علينا التعامل مع

244
00:19:55,045 --> 00:20:03,260
كل هذه الاحتمالات ثم سأخبرك بالضبط كيف نتعامل مع حالة PUT هنا.

245
00:20:03,260 --> 00:20:06,685
لذلك، في حالة PUT،

246
00:20:06,685 --> 00:20:10,140
أولا بالطبع نحن بحاجة إلى تحديد موقع المذبحة.

247
00:20:10,140 --> 00:20:13,600
لذلك سيقولون أطباق تجد بواسطة معرف req param ID،

248
00:20:13,600 --> 00:20:20,845
ثم إذا كان الطبق موجودًا والتعليق نفسه،

249
00:20:20,845 --> 00:20:23,080
فأنا أعلم أنه يمكنني تحديث التعليق.

250
00:20:23,080 --> 00:20:28,660
خلاف ذلك، من الواضح أن هذين الشرطين يجب

251
00:20:28,660 --> 00:20:32,740
أن تؤخذ الرعاية، أن التعليق غير موجود أو الطبق غير موجود.

252
00:20:32,740 --> 00:20:35,350
يتم التعامل مع هذين من قبل هذه القضية.

253
00:20:35,350 --> 00:20:38,190
الآن، هنا هو الوضع الخاص الذي لدينا.

254
00:20:38,190 --> 00:20:45,355
لذلك، إذا كان الطبق موجودًا والتعليق المحدد الذي أبحث عنه موجود أيضًا،

255
00:20:45,355 --> 00:20:50,300
فإن ما أعرفه هو أنه في نص الرسالة،

256
00:20:50,300 --> 00:20:53,760
يتم تحديد التحديث للتعليق.

257
00:20:53,760 --> 00:20:55,625
لذلك أنا بحاجة إلى تحديث ذلك.

258
00:20:55,625 --> 00:21:00,760
لذلك، في مكان ما هنا أفعل التعديلات،

259
00:21:00,760 --> 00:21:02,910
أفعل طبق حفظ هنا،

260
00:21:02,910 --> 00:21:10,110
لذلك أنا ذاهب للذهاب في ونسخ قليلا من هذا الرمز من هنا،

261
00:21:10,960 --> 00:21:17,680
وبطبيعة الحال هذا ليس الشيء الصحيح ولكن أنا فقط بحاجة إلى جزء من التعليمات البرمجية من هناك،

262
00:21:17,680 --> 00:21:19,940
لذلك سوف تأتي إلى بوت.

263
00:21:19,940 --> 00:21:23,270
اسمحوا لي أن لصق في مكان هنا

264
00:21:23,270 --> 00:21:27,340
وبعد ذلك سوف اقول لكم بالضبط كيف هم ذاهبون للتعامل مع هذا.

265
00:21:27,700 --> 00:21:31,200
لأنني بحاجة إلى طبق حفظ جزء.

266
00:21:31,200 --> 00:21:35,950
لذا، كيف نتعامل مع التحديث إلى تعليق محدد؟

267
00:21:35,950 --> 00:21:39,510
لذلك بالنسبة للتحديث إلى تعليق محدد،

268
00:21:39,510 --> 00:21:45,265
ما نعرفه هو أن هذا التعليق يحتاج إلى تحديث،

269
00:21:45,265 --> 00:21:49,900
لذلك نحن نعلم أن الطبق موجود والتعليق نفسه موجود.

270
00:21:49,900 --> 00:21:53,885
أريد تحديث حقول التيار.

271
00:21:53,885 --> 00:21:56,690
الآن، إذا كان هناك تعليق موجود بالفعل، فلا أريد

272
00:21:56,690 --> 00:21:59,530
السماح للمستخدم بتغيير مؤلف التعليق،

273
00:21:59,530 --> 00:22:00,890
فيجب الاحتفاظ بالمؤلف.

274
00:22:00,890 --> 00:22:09,090
الحقلان الوحيدان اللذان سأسمح بتحديث المستخدم هما التقييم.

275
00:22:09,090 --> 00:22:12,380
لذلك داخل نص رسالة PUT الواردة،

276
00:22:12,380 --> 00:22:15,089
يمكنني إما تضمين

277
00:22:15,089 --> 00:22:17,680
التقييم المحدث

278
00:22:21,830 --> 00:22:28,110
أو التعليق المحدث.

279
00:22:28,110 --> 00:22:33,475
هذان هما الأمران الوحيدان اللذان سأسمح للمستخدم بتغييرهما.

280
00:22:33,475 --> 00:22:40,190
حتى إذا كان تصنيف الملكية ies الجسم غير المباشر لاستدعاء أن الجسم

281
00:22:40,190 --> 00:22:47,940
سوف تحتوي على التحديث الذي نحاول القيام بذلك في هذه الحالة سنقول طبق.

282
00:22:48,240 --> 00:22:51,460
لذلك سوف نقول تعليقات طبق،

283
00:22:51,460 --> 00:22:54,000
لذلك اسمحوا لي فقط نسخ هذا الجزء.

284
00:22:54,000 --> 00:22:56,980
تعليق طبق معرف.

285
00:22:56,980 --> 00:23:02,770
الآن هذه طريقة بسيطة للتعامل مع هذه المشكلة هنا.

286
00:23:05,950 --> 00:23:11,525
نظرًا لعدم وجود طريقة محددة لتحديث

287
00:23:11,525 --> 00:23:16,655
تعليق محدد موجود في مستند فرعي،

288
00:23:16,655 --> 00:23:19,330
فلا توجد طريقة محددة للقيام بذلك.

289
00:23:19,330 --> 00:23:24,950
لذلك هذا هو الحل الذي وجدته يبدو أنه يعمل بالنسبة لنا،

290
00:23:24,950 --> 00:23:32,820
لذلك سنقول تعليقات طبق تعليق معلمة req تصنيف معرف يساوي req body.rating.

291
00:23:34,700 --> 00:23:37,640
لذلك سوف أقوم بتحديث التقييم.

292
00:23:37,640 --> 00:23:42,420
وبالمثل، إذا كان التعليق موجودًا هناك،

293
00:23:42,420 --> 00:23:51,995
فسأقول تعليق التعليق التعليق التعليق التعليق تعليق الجسم.

294
00:23:51,995 --> 00:23:57,655
لذا، هذه هي الطريقة التي سأقوم بتحديث التصنيف والتعليق،

295
00:23:57,655 --> 00:24:00,230
وأقول مرة عن تحديث التصنيف والتعليق،

296
00:24:00,230 --> 00:24:02,155
وسوف ينقذون الطبق،

297
00:24:02,155 --> 00:24:08,140
وبعد ذلك بمجرد حفظ الطبق ثم سأرسل الرد مرة أخرى.

298
00:24:08,140 --> 00:24:15,120
لذا، لاحظ أن هذه هي الطريقة الوحيدة التي وجدتها سهلة بما فيه الكفاية

299
00:24:15,120 --> 00:24:22,785
لتحديث مستند فرعي مضمن داخل مستند من Mongoose.

300
00:24:22,785 --> 00:24:28,520
لا توجد طريقة صريحة يدعمها Mongoose لتحديث مستند مضمن.

301
00:24:28,520 --> 00:24:34,275
إذن هذا هو الحل الذي وجدته والذي يمكننا من تنفيذ هذه العملية.

302
00:24:34,275 --> 00:24:38,825
الآن لعملية الحذف.

303
00:24:38,825 --> 00:24:43,940
بالنسبة لعملية الحذف، نقوم بحذف

304
00:24:43,940 --> 00:24:48,880
تعليق محدد فقط، لذلك سآخذ هذه المعلومات من

305
00:24:48,880 --> 00:24:53,915
deleter لجميع التعليقات

306
00:24:53,915 --> 00:24:55,880
وبدلاً من حذف جميع التعليقات

307
00:24:55,880 --> 00:24:58,190
سأقوم بحذف تعليق محدد فقط.

308
00:24:58,190 --> 00:25:03,095
لذلك، اسمحوا لي أن نسخ أكثر من حذف.

309
00:25:03,095 --> 00:25:07,920
اسمحوا لي أن لصق في هنا وبعد ذلك سوف نقوم بتحديث هذا.

310
00:25:07,920 --> 00:25:13,910
لذلك، إذا كنت حذف تعليق محدد لذلك سوف تجد أولا الطبق.

311
00:25:13,910 --> 00:25:17,240
إذا كان الطبق غير فارغ،

312
00:25:17,240 --> 00:25:21,480
تذكر أنه في هذه الحالة لا بد لي من التعامل مع كل من الطبق

313
00:25:21,480 --> 00:25:26,395
لا يجري فارغة وأيضا التعليق لا يجري فارغة.

314
00:25:26,395 --> 00:25:29,150
لذلك، سأقول إذا كان

315
00:25:32,890 --> 00:25:39,840
الطبق لا يساوي معلمة معرف تعليقات فارغة وطبق لا تساوي فارغة،

316
00:25:39,840 --> 00:25:44,335
ثم أعلم أن لدي تعليق محدد أريد حذفه.

317
00:25:44,335 --> 00:25:45,850
أنا لا أحذف جميع التعليقات،

318
00:25:45,850 --> 00:25:49,770
أنا أحذف فقط تعليق محدد هنا.

319
00:25:49,770 --> 00:25:58,700
لذلك، سأقول معرف تعليقات الطبق ثم أقوم بحذف التعليق المحدد هنا

320
00:25:58,700 --> 00:26:07,780
وهو req.params.CommentID وإزالة

321
00:26:07,780 --> 00:26:14,565
هذا التعليق معين ومن ثم سأحفظ الطبق المحدث ثم ننتقل إلى ذلك.

322
00:26:14,565 --> 00:26:19,225
الآن، الجزء الآخر أنا بحاجة للتعامل مع كلا الحالتين.

323
00:26:19,225 --> 00:26:23,180
لذلك، اسمحوا لي أن نسخ هذا الجزء آخر إذا طبق لا يساوي فارغة

324
00:26:23,180 --> 00:26:28,420
وهلم جرا ومن ثم استبدال هذا هنا.

325
00:26:28,420 --> 00:26:33,480
لذلك، إذا كان الطبق فارغًا، فسأرسل الخطأ قائلا أن الطبق غير موجود.

326
00:26:33,480 --> 00:26:37,640
إذا كان التعليق فارغًا، فسأرسل الخطأ قائلا إن التعليق غير موجود.

327
00:26:37,640 --> 00:26:39,520
لذا، هذا هو،

328
00:26:39,520 --> 00:26:41,770
هذا هو التحديث الذي أقوم به هنا.

329
00:26:41,770 --> 00:26:44,395
لحذف تعليق محدد،

330
00:26:44,395 --> 00:26:47,670
سأتأكد أولاً من

331
00:26:47,670 --> 00:26:52,040
وجود الطبق والتعليق ثم سأحذف التعليق المحدد ثم سأحفظ

332
00:26:52,040 --> 00:26:54,520
التغييرات

333
00:26:54,520 --> 00:27:00,315
على الطبق ثم أتابع التعامل مع بقية الحالات، هذا كل شيء.

334
00:27:00,315 --> 00:27:05,310
دعونا حفظ التغييرات ومن ثم ننظر في كيفية عمل هذا.

335
00:27:05,310 --> 00:27:07,210
الذهاب إلى المحطة،

336
00:27:07,210 --> 00:27:12,150
أرى خادم MongoDB لا يعمل ويعمل لذلك دعونا نبدأ هناك.

337
00:27:12,150 --> 00:27:14,000
تأكد، بالطبع، من

338
00:27:14,000 --> 00:27:16,075
أن خادم MongoDB قيد التشغيل،

339
00:27:16,075 --> 00:27:19,070
دعنا نبدأ أيضًا الخادم السريع الخاص بنا.

340
00:27:19,890 --> 00:27:23,165
بمجرد تشغيل الخادم السريع الخاص بك وتشغيله،

341
00:27:23,165 --> 00:27:27,185
ما سنفعله هو أننا ننظر الآن على وجه التحديد

342
00:27:27,185 --> 00:27:32,420
في التعليقات ومن ثم تنفيذ العمليات على التعليقات.

343
00:27:32,420 --> 00:27:36,320
لذلك، دعونا نذهب إلى ساعي البريد

344
00:27:36,320 --> 00:27:44,540
ثم تحقق من ما لدينا في قاعدة البيانات ومن ثم محاولة تعديل التعليقات.

345
00:27:44,540 --> 00:27:47,760
لذلك، أنا هنا في ساعي البريد،

346
00:27:47,760 --> 00:27:53,265
لذلك اسمحوا لي أولا الحصول على الأطباق والآن أرى أن جميع الأطباق فارغة.

347
00:27:53,265 --> 00:28:02,385
لذلك اسمحوا لي أن نشر طبق إلى قائمة من الأطباق لذلك اسمحوا لي أن نشر طبق واحد.

348
00:28:02,385 --> 00:28:04,860
أذكر أن لدينا هذا الطبق لها،

349
00:28:04,860 --> 00:28:11,540
وذلك في ساعي البريد كنت قد فعلت ذلك بالفعل لممارسة السابقة.

350
00:28:11,540 --> 00:28:16,160
أنا فقط ذاهب لاختيار ذلك ومن ثم نشر ذلك الطبق وبعد ذلك

351
00:28:16,160 --> 00:28:21,205
ترى أن هذا الطبق معين قد نشرت هنا، أسفل هنا.

352
00:28:21,205 --> 00:28:25,060
يمكنك أن ترى أن الطبق قد تم إنشاؤه هناك.

353
00:28:25,060 --> 00:28:33,970
دعوني الآن أنسخ معرف الطبق الخاص ومن ثم

354
00:28:33,970 --> 00:28:45,505
سأحضر هذا الطبق هنا

355
00:28:45,505 --> 00:28:49,920
لذلك، ترى أن هذا الطبق معين موجود هنا.

356
00:28:49,920 --> 00:28:52,575
أولا، دعونا الحصول على جميع التعليقات.

357
00:28:52,575 --> 00:28:55,480
لذا، إذا كنت تفعل الحصول على التعليقات لاحظت أن

358
00:28:55,480 --> 00:28:58,370
جميع التعليقات لهذا الطبق معين قد عاد.

359
00:28:58,370 --> 00:29:02,195
يمكننا أن نفعل هذا المنصب وحذف أيضا.

360
00:29:02,195 --> 00:29:05,865
دعونا نفعل وضع على ذلك، ومن الواضح أنك لا تستطيع أن تفعل وضعت على

361
00:29:05,865 --> 00:29:09,960
الظهر حتى تلاحظ أن عملية وضع لا تعمل على ذلك.

362
00:29:09,960 --> 00:29:13,110
دعونا نشر تعليق جديد.

363
00:29:13,110 --> 00:29:18,070
حتى لنشر تعليق جديد سوف نذهب إلى الجسم،

364
00:29:18,380 --> 00:29:28,990
ومن ثم اسمحوا لي أن قطع كل هذه وبعد ذلك سنقوم تحرير واحدة من

365
00:29:28,990 --> 00:29:31,130
التعليقات ومن ثم

366
00:29:35,790 --> 00:29:40,045
محاولة نشر هذا التعليق.

367
00:29:40,045 --> 00:29:45,130
لذلك، سنقول تصنيف ثلاثة وبعد ذلك

368
00:29:45,130 --> 00:29:56,110
سنقول اختبار التعليق، اختبار المستخدم.

369
00:29:56,110 --> 00:29:58,425
دعونا نشر هذا التعليق.

370
00:29:58,425 --> 00:30:00,190
عند نشر هذا التعليق،

371
00:30:00,190 --> 00:30:05,920
ترى أن طبق التحديث قد عاد هنا وترى أنه داخل

372
00:30:05,920 --> 00:30:14,530
هذا الطبق ترى أن التعليق الجديد قد تم تضمينه هناك.

373
00:30:14,530 --> 00:30:20,335
لذلك، دعونا نسخ هذا الشيء كله.

374
00:30:20,335 --> 00:30:27,515
الآن، سنحاول الحصول على هذا التعليق الخاص الذي أدخلناه للتو.

375
00:30:27,515 --> 00:30:31,440
لهذا التعليق الخاص هذا هو معرف هذا التعليق.

376
00:30:31,440 --> 00:30:35,180
لذلك اسمحوا لي بنسخ المعرف لهذا التعليق المحدد.

377
00:30:35,180 --> 00:30:38,545
العودة إلى ساعي البريد،

378
00:30:38,545 --> 00:30:43,915
اسمحوا لي أن أحاول استرداد هذا التعليق المحدد عن طريق القيام بعملية الحصول على.

379
00:30:43,915 --> 00:30:48,380
هناك ترى أن هذا التعليق معين قد تم استرجاعه هنا.

380
00:30:48,380 --> 00:30:52,050
الآن، إذا كنت تحاول القيام بدور على ذلك، فلن يعمل

381
00:30:52,050 --> 00:30:56,445
ذلك من الواضح أنك ترى أن عملية النشر غير مسموح بها على ذلك.

382
00:30:56,445 --> 00:31:01,370
دعونا نفعل عملية وضع،

383
00:31:03,860 --> 00:31:06,385
على هذا التعليق معين.

384
00:31:06,385 --> 00:31:10,010
لذا، إذا كنت سأضع العملية في الجسم،

385
00:31:10,390 --> 00:31:18,285
فسأقول تعليق اختبار محدث.

386
00:31:18,285 --> 00:31:23,200
لذلك، سأقوم بتحديث حقل التعليق من هذا التعليق.

387
00:31:23,200 --> 00:31:28,745
إذا كنت تقول أن تضع على ذلك سترى أنه بالنسبة للتعليق المحدد،

388
00:31:28,745 --> 00:31:33,670
فقد تم تحديث التعليق الآن ليعكس تعليق الاختبار المحدث.

389
00:31:33,670 --> 00:31:39,515
لذلك، ترى أن عملية وضع في حقل التعليقات تعمل أيضا بشكل صحيح.

390
00:31:39,515 --> 00:31:42,820
دعونا حذف هذا التعليق،

391
00:31:42,820 --> 00:31:46,660
حتى أتمكن من حذف التعليق وبعد ذلك عندما أحذف التعليق

392
00:31:46,660 --> 00:31:50,475
سترى أن هذا التعليق قد اختفى من قائمة التعليقات.

393
00:31:50,475 --> 00:31:53,915
لذلك، ترى أن عملية الحذف تعمل أيضًا.

394
00:31:53,915 --> 00:31:55,970
دعونا حذف جميع التعليقات.

395
00:31:55,970 --> 00:32:00,595
لذلك أنا ذاهب للذهاب في وحذف جميع التعليقات.

396
00:32:00,595 --> 00:32:04,650
ثم ترى أن جميع التعليقات قد تم

397
00:32:04,650 --> 00:32:09,380
حذفها، وهكذا ترى أن منطقة التعليقات فارغة الآن.

398
00:32:09,380 --> 00:32:13,050
لذلك، الآن يمكنك أن ترى كل منهم الحصول على، ووضع، ونشر،

399
00:32:13,050 --> 00:32:14,905
وحذف العمليات على

400
00:32:14,905 --> 00:32:21,064
الأطباق/أعذاء/التعليقات

401
00:32:21,064 --> 00:32:25,455
والأصحان/عرض/التعليقات/CommentID،

402
00:32:25,455 --> 00:32:29,710
ريست أبي نقاط النهاية كل العمل كما هو متوقع.

403
00:32:29,710 --> 00:32:32,670
لذلك مع هذا نكمل هذا التمرين.

404
00:32:32,670 --> 00:32:38,365
لذلك، في هذا التمرين أكملنا تنفيذ أطباق مائلة،

405
00:32:38,365 --> 00:32:42,395
ونقطة النهاية REST API ودعمنا على طول الطريق حتى

406
00:32:42,395 --> 00:32:47,070
يسمح لنا بالتلاعب

407
00:32:47,070 --> 00:32:48,730
في طبق واحد، وجمع الأطباق،

408
00:32:48,730 --> 00:32:52,165
وتعليق واحد وأيضا مجموعة من التعليقات.

409
00:32:52,165 --> 00:32:56,930
هذا هو الوقت المناسب بالنسبة لك للقيام git الالتزام مع الرسالة،

410
00:32:56,930 --> 00:33:02,600
التعبير عن، REST API مع الجزء الثاني من Mongoose.