1
00:00:03,680 --> 00:00:06,035
في الدرس السابق،

2
00:00:06,035 --> 00:00:08,550
تعلمنا عن برنامج تشغيل MongoDB.

3
00:00:08,550 --> 00:00:14,250
هذا يمكّن تطبيق العقدة لدينا من التواصل مع خادم MongoDB،

4
00:00:14,250 --> 00:00:19,660
وكذلك تخزين المستندات واستردادها من خادم MongoDB.

5
00:00:19,660 --> 00:00:23,310
رأينا أيضًا أن برنامج تشغيل MongoDB يوفر لنا

6
00:00:23,310 --> 00:00:28,770
العديد من الطرق التي تمكننا من إنشاء مجموعات داخل قاعدة بيانات،

7
00:00:28,770 --> 00:00:30,925
وإضافة مستندات إلى المجموعات،

8
00:00:30,925 --> 00:00:35,695
ثم إجراء عمليات مختلفة على المستندات داخل مجموعة.

9
00:00:35,695 --> 00:00:41,060
الآن، عندما يتم تخزين المستندات في قاعدة البيانات،

10
00:00:41,060 --> 00:00:46,330
لا يفرض برنامج تشغيل MongoDB نفسه أي بنية على المستندات.

11
00:00:46,330 --> 00:00:52,640
إذا كنا بحاجة إلى بنية محددة للمستندات وفرض هذا الهيكل،

12
00:00:52,640 --> 00:00:58,505
فإننا بحاجة إلى الاستفادة من وحدة عقدة Mongoose التي تمكننا من تحديد

13
00:00:58,505 --> 00:01:05,015
مخطط وبنية لمستنداتنا المخزنة في قاعدة بيانات MongoDB الخاصة بنا،

14
00:01:05,015 --> 00:01:08,275
وفرض الهيكل بشكل صارم.

15
00:01:08,275 --> 00:01:16,035
دعونا ننظر إلى مزيد من التفاصيل في هذه المحاضرة والتدريبات التي تتبع هذه المحاضرة.

16
00:01:16,035 --> 00:01:18,540
كما تعلمنا بالفعل، يقوم

17
00:01:18,540 --> 00:01:25,035
MongoDB بتخزين البيانات في مجموعات في قاعدة بيانات.

18
00:01:25,035 --> 00:01:28,695
تتكون هذه المجموعات من مجموعة من الوثائق.

19
00:01:28,695 --> 00:01:30,750
الوثائق نفسها المخزنة في

20
00:01:30,750 --> 00:01:35,405
قاعدة بيانات MongoDB ليس لها بنية محددة مفروضة على الوثيقة.

21
00:01:35,405 --> 00:01:38,570
يمكن تخزين أي مستند في أي مجموعة.

22
00:01:38,570 --> 00:01:46,370
يعتمد MongoDB على المطور لفرض البنية على المستندات،

23
00:01:46,370 --> 00:01:52,295
ويعطي المسؤولية الكاملة للمطور للتأكد

24
00:01:52,295 --> 00:01:58,670
من إضافة مستندات البنية الصحيحة والحفاظ عليها في المجموعات المختلفة.

25
00:01:58,670 --> 00:02:01,960
الآن، من السهل جدا انتهاك هذا.

26
00:02:01,960 --> 00:02:06,260
على سبيل المثال، على الرغم من أنك قد تبدأ بافتراض

27
00:02:06,260 --> 00:02:11,030
أن اتصالاً معينًا سيكون له مستندات ذات بنية معينة،

28
00:02:11,030 --> 00:02:17,045
يمكنك بسهولة إدراج مستندات لا تتوافق بالضرورة مع البنية.

29
00:02:17,045 --> 00:02:21,170
إذا كنت محددًا جدًا أن بنية المستندات في

30
00:02:21,170 --> 00:02:25,550
المجموعة تحتوي دائمًا على بنية محددة،

31
00:02:25,550 --> 00:02:28,550
وستحصل دائمًا على مجموعة محددة من الحقول،

32
00:02:28,550 --> 00:02:32,540
فإن MongoDB نفسه لا يفرض ذلك أيضًا

33
00:02:32,540 --> 00:02:36,630
برنامج تشغيل MongoDB الذي رأيناه في الدرس السابق.

34
00:02:36,630 --> 00:02:40,565
هذا هو المكان الذي سنحتاج فيه إلى طريقة أكثر رسمية لفرض

35
00:02:40,565 --> 00:02:46,385
بنية على المستندات المخزنة في مجموعة في قاعدة بيانات MongoDB.

36
00:02:46,385 --> 00:02:52,390
هذا هو المكان الذي تأتي وحدة عقدة النمس لمساعدتنا.

37
00:02:52,390 --> 00:02:56,405
تفرض الوحدة النمطية عقدة Mongoose

38
00:02:56,405 --> 00:03:01,875
بنية موحدة للمستندات المخزنة في مجموعة معينة.

39
00:03:01,875 --> 00:03:07,175
لذلك، هذا هو السبب في أننا غالبا ما نسمع الناس يشيرون إلى هذا باسم Mongoose ODM.

40
00:03:07,175 --> 00:03:10,950
يتم تفسير ODM نفسه من قبل بعض الأشخاص على أنه يعني

41
00:03:10,950 --> 00:03:16,995
نموذج بيانات الكائن أو يشار إليه أحيانًا باسم تعيين مستند الكائن،

42
00:03:16,995 --> 00:03:22,125
أو يشير بعض الأشخاص إليه على أنه ORM أو تعيين كائن علائقي.

43
00:03:22,125 --> 00:03:27,755
الآن، عندما نتحدث عن العلائقية التي تنطبق أكثر بكثير على قواعد البيانات العلائقية،

44
00:03:27,755 --> 00:03:33,380
ولكن بعد ذلك مع قواعد بيانات SQL كنا بحاجة صراحة إلى كائن

45
00:03:33,380 --> 00:03:41,850
لرسم الخرائط العلائقية ليتم وضعها بين قاعدة البيانات وتطبيقنا نفسه.

46
00:03:41,850 --> 00:03:45,245
لأنه داخل التطبيق سوف ننظر في

47
00:03:45,245 --> 00:03:50,245
الكائنات ولكن تخزينها في قاعدة بيانات سكل سيكون في شكل سجلات،

48
00:03:50,245 --> 00:03:52,585
وبالتالي تحتاج إلى تعيين صريح.

49
00:03:52,585 --> 00:03:54,870
كما رأينا مع قاعدة بيانات NoSQL،

50
00:03:54,870 --> 00:03:56,685
لم يكن هذا مطلوبًا بشكل صريح.

51
00:03:56,685 --> 00:04:03,710
ولكن إذا كنت بحاجة إلى فرض بنية على مستنداتك المخزنة في مجموعة،

52
00:04:03,710 --> 00:04:10,790
فإن استخدام Mongoose لفرض هذا الهيكل مفيد للغاية.

53
00:04:10,790 --> 00:04:13,880
الطريقة التي يدور بها Mongoose حول

54
00:04:13,880 --> 00:04:18,275
فرض الهيكل على المستندات هي من خلال استخدام المخطط.

55
00:04:18,275 --> 00:04:21,995
مخطط، ويحدد هيكل وثائقها.

56
00:04:21,995 --> 00:04:24,800
دعونا نتحدث عن ذلك بمزيد من التفصيل.

57
00:04:24,800 --> 00:04:27,580
لذا، ما هو مخطط النمس بالضبط،

58
00:04:27,580 --> 00:04:29,700
وماذا يجلب إلى الطاولة؟

59
00:04:29,700 --> 00:04:34,700
مخطط Mongoose، ينطوي على بنية

60
00:04:34,700 --> 00:04:39,735
على البيانات المخزنة في مستند في قاعدة البيانات الخاصة بك.

61
00:04:39,735 --> 00:04:42,770
لذلك، فإنه يحدد جميع حقول المستند الخاص بك،

62
00:04:42,770 --> 00:04:45,349
ويحدد أيضا أنواع الحقول،

63
00:04:45,349 --> 00:04:47,345
وأيضا يمكن أن توفر لنا مع

64
00:04:47,345 --> 00:04:51,965
ميزات إضافية التي يمكن تمكين التحقق من صحة هذه الحقول.

65
00:04:51,965 --> 00:04:59,425
لذلك، على سبيل المثال، تتضمن أنواع المخططات المختلفة المدعومة في Mongoose: سلسلة،

66
00:04:59,425 --> 00:05:03,195
رقم، تاريخ، المخزن المؤقت، منطقي،

67
00:05:03,195 --> 00:05:06,295
مختلط، معرف الكائن، و صفيف. على

68
00:05:06,295 --> 00:05:09,070
وجه الخصوص سوف ننظر في رقم السلسلة

69
00:05:09,070 --> 00:05:14,405
، وتاريخ، ومنطقية في التمرين الذي يلي.

70
00:05:14,405 --> 00:05:18,075
وسوف ننظر في بعض من غيرها في تمارين لاحقة. على

71
00:05:18,075 --> 00:05:22,125
وجه الخصوص، لاحظ استخدام نوع مخطط الصفيف.

72
00:05:22,125 --> 00:05:25,570
لذلك، سيسمح لك نوع مخطط الصفيف

73
00:05:25,570 --> 00:05:31,640
بإنشاء مصفوفة من المستندات الفرعية داخل المستند.

74
00:05:31,640 --> 00:05:33,740
سأتحدث عن ذلك في فترة قصيرة

75
00:05:33,740 --> 00:05:36,940
بمجرد تحديد مخطط،

76
00:05:36,960 --> 00:05:42,160
يتم استخدام المخطط في Mongoose لإنشاء دالة نموذج،

77
00:05:42,160 --> 00:05:49,830
وهذا ما يمكّنك من تحديد بنية المستندات الخاصة بك في قاعدة البيانات.

78
00:05:49,830 --> 00:05:53,225
المخططات نفسها يمكن أن يكون التعشيش.

79
00:05:53,225 --> 00:05:58,490
لذلك، مما يعني أنه يمكن أن يكون لديك مستند فرعي يتم تضمينه داخل مستند.

80
00:05:58,490 --> 00:06:01,519
عادة ما يتم استيعاب المستندات الفرعية

81
00:06:01,519 --> 00:06:04,890
إما من خلال

82
00:06:04,890 --> 00:06:11,870
تحديد مخطط إضافي، ومن ثم تحديد أحد حقول المخطط ليكون خارج نوع المخطط الآخر.

83
00:06:11,870 --> 00:06:15,215
أو يمكنك حتى الذهاب مع صفيف من

84
00:06:15,215 --> 00:06:20,000
نوع مخطط آخر داخل مخطط ثاني تقوم بتعريفه.

85
00:06:20,000 --> 00:06:24,930
دعونا ننظر إلى مثال لتوضيح بعض هذه بمزيد من التفصيل.

86
00:06:24,930 --> 00:06:32,010
سيكون هذا المثال من التمرين الذي ستقوم به مباشرة بعد هذه المحاضرة.

87
00:06:32,010 --> 00:06:37,705
قبل أن أتمكن من التحدث عن المخططات والنماذج في Mongoose،

88
00:06:37,705 --> 00:06:41,310
دعونا نفهم لماذا نحتاج إلى ذلك.

89
00:06:41,310 --> 00:06:43,975
إذا كنت قد أخذت الزاوي السابق،

90
00:06:43,975 --> 00:06:46,760
أو الأيونية، أو البرنامج النصي الأصلي،

91
00:06:46,760 --> 00:06:49,445
فقد رأيت أننا نمثل

92
00:06:49,445 --> 00:06:55,565
البيانات المختلفة التي نستخدمها في تطبيقاتنا في شكل سلاسل JSON.

93
00:06:55,565 --> 00:07:02,050
لذلك، في تطبيقنا نحدد مجموعة تسمى الأطباق.

94
00:07:02,050 --> 00:07:03,770
في مجموعة طبق،

95
00:07:03,770 --> 00:07:09,700
سيحتوي كل طبق على مجموعة معينة من الخصائص المحددة في شكل سلسلة JSON،

96
00:07:09,700 --> 00:07:11,665
كما ترى في هذا المثال هنا.

97
00:07:11,665 --> 00:07:15,830
لذلك، فإن الأطباق هي مجموعة من نوع الطبق،

98
00:07:15,830 --> 00:07:18,605
وسوف يحتوي كل طبق نفسه على اسم

99
00:07:18,605 --> 00:07:20,290
، صورة، فئة،

100
00:07:20,290 --> 00:07:22,015
تسمية، وهلم جرا.

101
00:07:22,015 --> 00:07:26,360
أيضًا، داخل مستند الطبق نفسه،

102
00:07:26,360 --> 00:07:32,830
سيكون لديك تعليقات يتم تخزينها كمجموعة من مرة أخرى، -

103
00:07:32,830 --> 00:07:38,240
مستندات JSON التي تحتوي على خطوة حقول محددة.

104
00:07:38,240 --> 00:07:39,750
لذلك، كل تعليق، على سبيل المثال،

105
00:07:39,750 --> 00:07:45,685
يحتوي على مؤلف تعليق تصنيف وحقل تاريخ كما ترى في هذا المثال هنا.

106
00:07:45,685 --> 00:07:49,215
لذلك، ترى أن هناك بنية واضحة

107
00:07:49,215 --> 00:07:55,230
لكل وثيقة تحدد الطبق الذي يتم تخزينه في قاعدة البيانات الخاصة بنا.

108
00:07:55,230 --> 00:08:02,545
من الواضح أنه سيتم تخزين أطباق متعددة في شكل مجموعة في قاعدة البيانات الخاصة بنا،

109
00:08:02,545 --> 00:08:06,655
ويمكن تجميعها معًا وإرسالها كمجموعة من

110
00:08:06,655 --> 00:08:11,165
الأطباق لتطبيق العميل الخاص بنا ليتم استخدامها.

111
00:08:11,165 --> 00:08:14,890
الآن بعد أن فهمنا كيف يتم تعريف هذا، الآن،

112
00:08:14,890 --> 00:08:22,000
كيف يرتبط هذا بمخطط النمس والنموذج الذي نعرفه في النمس؟

113
00:08:22,000 --> 00:08:27,460
الآن، لاحظ هيكل وثيقة طبق نموذجي هنا.

114
00:08:27,460 --> 00:08:34,095
لذلك، يمكن تعيين هذا بسهولة في مستند MongoDB في مجموعة،

115
00:08:34,095 --> 00:08:37,375
ربما سميت مجموعة الأطباق.

116
00:08:37,375 --> 00:08:42,605
لذلك، نرى أن هناك بنية واضحة للوثيقة نفسها.

117
00:08:42,605 --> 00:08:50,320
الآن، كيف يمكننا عكس هذا في مخطط في تطبيق Mongoose الخاص بنا؟

118
00:08:50,320 --> 00:08:54,095
كما ستتعلم في التمرين،

119
00:08:54,095 --> 00:08:57,900
سنرى أننا سنحدد المخططات في Mongoose.

120
00:08:57,900 --> 00:09:03,085
لذلك يتم تعريف المخطط كمخطط Mongoose هنا.

121
00:09:03,085 --> 00:09:09,925
على سبيل المثال، يتم عرض تعليق هنا.

122
00:09:09,925 --> 00:09:13,885
يحتوي التعليق، كما ترى، على ثلاثة حقول مختلفة: التصنيف والتعليق

123
00:09:13,885 --> 00:09:15,445
وحقل المؤلف،

124
00:09:15,445 --> 00:09:18,745
وكذلك الطوابع الزمنية هنا.

125
00:09:18,745 --> 00:09:23,560
تسمح لك الطوابع الزمنية بالحصول على حقلين مختلفين في

126
00:09:23,560 --> 00:09:28,850
المستند: الحقل الذي تم إنشاؤه في الحقل وتحديثه في الحقل،

127
00:09:28,850 --> 00:09:38,200
وكلاهما طوابع زمنية مخزنة في شكل سلسلة تاريخ ISO في المستند.

128
00:09:38,200 --> 00:09:43,615
الآن، التصنيف نفسه سيكون قيمة عدد صحيح.

129
00:09:43,615 --> 00:09:46,400
لذلك، في مصطلحات Mongoose،

130
00:09:46,400 --> 00:09:48,755
سيتم تخزينها

131
00:09:48,755 --> 00:09:50,680
كرقم، سيكون النوع رقمًا.

132
00:09:50,680 --> 00:09:53,660
يمكنك حتى تحديد الحد الأدنى والقيمة القصوى.

133
00:09:53,660 --> 00:09:57,190
يمكنك أيضًا تحديد أن هذا الحقل المحدد مطلوب، لذلك،

134
00:09:57,190 --> 00:10:04,460
مما يعني أن كل مستند من نوع التعليق يجب أن يحتوي على حقل تصنيف.

135
00:10:04,460 --> 00:10:07,370
وبالمثل، يمكنك أيضًا تحديد حقل تعليق،

136
00:10:07,370 --> 00:10:08,710
وهو من سلسلة النوع.

137
00:10:08,710 --> 00:10:13,635
لذا، من الواضح أن التعليق ليس سوى سلسلة تحتوي على بعض المعلومات،

138
00:10:13,635 --> 00:10:16,340
وهذا يمكن تعريفه أيضًا كحقل مطلوب،

139
00:10:16,340 --> 00:10:18,805
مما يعني أن كل مستند يجب أن يحتوي على تعليق،

140
00:10:18,805 --> 00:10:21,060
وكذلك حقل مؤلف،

141
00:10:21,060 --> 00:10:22,800
وهو أيضًا من سلسلة النوع.

142
00:10:22,800 --> 00:10:28,030
لذلك، ترى ذلك من خلال تحديد هذا المخطط في هذا التنسيق.

143
00:10:28,030 --> 00:10:32,600
كما تعلمنا في المناقشة قليلاً في وقت سابق،

144
00:10:32,600 --> 00:10:41,890
يتم تعريف المخطط باستخدام الأنواع المختلفة التي لدينا في تطبيق Mongoose الخاص بنا.

145
00:10:41,890 --> 00:10:43,030
لذلك، في المخطط، مرة أخرى،

146
00:10:43,030 --> 00:10:44,900
ترى ثلاثة حقول مختلفة هنا،

147
00:10:44,900 --> 00:10:47,135
التصنيف، التعليق، والمؤلف هنا،

148
00:10:47,135 --> 00:10:50,665
ولكل منها نوع معين معين معين،

149
00:10:50,665 --> 00:10:53,060
وبعد ذلك ما إذا كان هذا مطلوبًا أم لا.

150
00:10:53,060 --> 00:10:56,505
لذلك، وبالتالي، أنت تفرض بنية صارمة

151
00:10:56,505 --> 00:11:01,320
على وثائق التعليق التي سيتم تخزينها في التطبيق الخاص بك.

152
00:11:01,320 --> 00:11:05,255
الآن بعد أن حددنا مخطط تعليق، يمكننا بعد ذلك،

153
00:11:05,255 --> 00:11:12,254
كما لاحظت من مثال نوع البيانات التي نطلبها في طلبنا،

154
00:11:12,254 --> 00:11:15,000
لدينا وثيقة طبق نفسها.

155
00:11:15,000 --> 00:11:17,620
يحتوي مستند الطبق على حقول مختلفة.

156
00:11:17,620 --> 00:11:19,050
هنا، في التمرين،

157
00:11:19,050 --> 00:11:23,355
سنقوم أولاً بإدخال حقلين فقط في مستند الطبق،

158
00:11:23,355 --> 00:11:25,370
والاسم، والوصف.

159
00:11:25,370 --> 00:11:27,010
في الدرس التالي،

160
00:11:27,010 --> 00:11:32,330
سوف نقدم الحقول المتبقية لديششيما.

161
00:11:32,330 --> 00:11:33,680
الآن، وبالتالي فإن الاسم،

162
00:11:33,680 --> 00:11:35,440
كما هو الحال في هذه الحالة،

163
00:11:35,440 --> 00:11:36,765
هو من سلسلة النوع.

164
00:11:36,765 --> 00:11:39,450
يمكننا أيضًا تحديد أن هذا حقل مطلوب،

165
00:11:39,450 --> 00:11:43,360
مما يعني أن كل مستند يجب أن يحتوي على حقل الاسم.

166
00:11:43,360 --> 00:11:46,385
يمكننا أيضًا تحديد أن حقل الاسم فريد،

167
00:11:46,385 --> 00:11:53,215
مما يعني أنه لا يوجد وثيقتان يمكن أن يكون لهما نفس قيمة الاسم بالضبط في المستند.

168
00:11:53,215 --> 00:11:55,980
لذلك، يضمن ذلك أن يكون لكل مستند

169
00:11:55,980 --> 00:12:01,300
حقل اسم فريد فيه وحقل وصف،

170
00:12:01,300 --> 00:12:03,115
وهو مرة أخرى من سلسلة النوع،

171
00:12:03,115 --> 00:12:06,460
ولكن يتم تحديده أيضًا حسب الحاجة.

172
00:12:06,460 --> 00:12:10,010
الآن، كما رأينا في المثال،

173
00:12:10,010 --> 00:12:15,750
يحتوي مستند الطبق على تعليقات متعددة محاطة داخل المستند.

174
00:12:15,750 --> 00:12:20,920
الآن، في Mongoose، يتم دعم هذا من خلال استخدام الوثائق الفرعية.

175
00:12:20,920 --> 00:12:24,230
لذلك، إذا قمت بتعريف مخطط في وقت سابق

176
00:12:24,230 --> 00:12:27,345
، لذلك على سبيل المثال، قمنا بالفعل

177
00:12:27,345 --> 00:12:33,370
بتعريف تعليق هنا، يمكنك أيضًا تحديد حقل في مخطط آخر تقوم بتعريفه

178
00:12:33,370 --> 00:12:36,240
ثم تحديد أن هذا الحقل سيكون

179
00:12:36,240 --> 00:12:39,520
من نوع المخطط السابق الذي قمت بتعريفه.

180
00:12:39,520 --> 00:12:40,960
لذا، في هذه الحالة،

181
00:12:40,960 --> 00:12:44,360
حقل التعليقات، أقوم بتعريفه كمصفوفة،

182
00:12:44,360 --> 00:12:51,545
لذلك ترى استخدام نوع مصفوفة في المخطط الخاص بك الذي تحدده هنا،

183
00:12:51,545 --> 00:12:55,110
ثم صفيف من نوع التعليقات.

184
00:12:55,110 --> 00:13:00,725
لذلك، هذا هو مجموعة من التعليقات التي سيتم تضمينها في كل وثيقة طبق.

185
00:13:00,725 --> 00:13:02,590
لذلك، وبالتالي، يمكن أن يكون لديك

186
00:13:02,590 --> 00:13:11,640
أكثر من وثيقة فرعية تعليق داخل وثيقة طبق.

187
00:13:11,640 --> 00:13:16,080
لذا، فإن تعريف البنية مثل هذا يمكّننا

188
00:13:16,080 --> 00:13:20,950
من دعم بنية سلسلة JSON المقابلة التي حددناها

189
00:13:20,950 --> 00:13:26,470
لمستند طبق أو رأيناها في المثال سابقًا.

190
00:13:26,470 --> 00:13:30,145
الآن، بمجرد أن نحدد المخطط،

191
00:13:30,145 --> 00:13:33,695
للاستفادة من هذا في تطبيقنا،

192
00:13:33,695 --> 00:13:38,600
نحتاج إلى إنشاء نموذج من هذا المخطط الذي حددناه للتو.

193
00:13:38,600 --> 00:13:40,640
لذلك، ضمن تطبيقنا،

194
00:13:40,640 --> 00:13:45,320
سنقوم بتعريف نموذج Mongoose وتحديد أن النموذج

195
00:13:45,320 --> 00:13:51,085
خارج نوع DishSchema في هذا المثال.

196
00:13:51,085 --> 00:13:54,830
ليس هذا فقط، سوف تعطي أيضا اسما للنموذج هنا.

197
00:13:54,830 --> 00:13:57,100
لذلك، عندما تعطي اسمًا للنموذج هنا،

198
00:13:57,100 --> 00:14:00,000
نحدد الاسم كطبق.

199
00:14:00,000 --> 00:14:03,860
الآن، عند استخدام نموذج الطبق هذا في

200
00:14:03,860 --> 00:14:07,870
تطبيق العقدة لدينا حيث نستخدم النمس،

201
00:14:07,870 --> 00:14:15,280
فسيتم تحويل هذا وتعيينه إلى مجموعة في قاعدة بيانات MongoDB الخاصة بي.

202
00:14:15,280 --> 00:14:18,885
سيتم تسمية المجموعة نفسها كأطباق.

203
00:14:18,885 --> 00:14:23,355
لذا، يعرف Mongoose تلقائيًا أنه عند تحديد اسم هنا،

204
00:14:23,355 --> 00:14:27,990
سيقوم تلقائيًا بإنشاء صيغة الجمع

205
00:14:27,990 --> 00:14:31,635
لهذا الاسم ثم إعطاء المجموعة الاسم،

206
00:14:31,635 --> 00:14:37,160
وهو صيغة الجمع لاسم النموذج الذي تحدده في هذا المثال هنا.

207
00:14:37,160 --> 00:14:39,400
لذلك، عندما أقول طبق هنا،

208
00:14:39,400 --> 00:14:42,620
ثم Mongoose تلقائيا سوف خريطة هذا في

209
00:14:42,620 --> 00:14:46,365
مجموعة الأطباق في قاعدة بيانات MongoDB.

210
00:14:46,365 --> 00:14:53,385
كيف تعرف كيفية تحويل هذا الاسم المفرد إلى صيغة الجمع؟

211
00:14:53,385 --> 00:14:56,750
يحتوي Mongoose تلقائيًا على آلية مدمجة

212
00:14:56,750 --> 00:15:01,795
تمكنها من بناء عدد وافر من الكلمات الإنجليزية القياسية.

213
00:15:01,795 --> 00:15:02,965
لذلك، إذا كنت تقول طبق،

214
00:15:02,965 --> 00:15:04,170
فإنه سيتم بناء الأطباق.

215
00:15:04,170 --> 00:15:08,880
إذا كنت تقول زعيم، فإنه سيتم بناء الجمع منه كقادة، وهلم جرا.

216
00:15:08,880 --> 00:15:13,250
لذلك، تم دمج هذا بالفعل في وحدة عقدة Mongoose.

217
00:15:13,250 --> 00:15:17,585
لذا، هذا هو السبب عندما أحدد هذا كنوع نموذج طبق،

218
00:15:17,585 --> 00:15:24,050
فإن Mongoose سيقوم ببناء مجموعة الأطباق في قاعدة بيانات MongoDB الخاصة بي،

219
00:15:24,050 --> 00:15:27,155
ثم ستقوم مجموعة الأطباق بتخزين

220
00:15:27,155 --> 00:15:33,050
المستندات المختلفة لنوع الطبق هناك.

221
00:15:33,050 --> 00:15:35,780
بمجرد إنشاء ذلك، عادة،

222
00:15:35,780 --> 00:15:38,150
عندما نعلن عن نماذج في تطبيقنا،

223
00:15:38,150 --> 00:15:43,780
سنقوم بتخزينها في مجلد فرعي يسمى نماذج، فقط للراحة.

224
00:15:43,780 --> 00:15:44,900
لا تحتاج إلى القيام بذلك،

225
00:15:44,900 --> 00:15:47,320
ولكن فقط لتنظيم التطبيق الخاص بك،

226
00:15:47,320 --> 00:15:50,635
سنقوم عادة بتخزين ذلك في مجلد باسم النماذج.

227
00:15:50,635 --> 00:15:55,010
ثم سيتم

228
00:15:55,010 --> 00:15:59,470
تعريف المخطط والنموذج في ملف مثل هذا كما ترى في المثال هنا،

229
00:15:59,470 --> 00:16:05,230
وهذا يسمى dishes.js، ومن ثم سيتم تصدير هذا لأن هذا هو وحدة عقدة.

230
00:16:05,230 --> 00:16:10,970
سيتم تصدير هذا من هذا الملف بحيث يمكن تضمينه في تطبيق العقدة،

231
00:16:10,970 --> 00:16:13,100
حيث سنقوم باستخدام

232
00:16:13,100 --> 00:16:16,620
هذا المخطط والنموذج الذي حددناه للتو هنا.

233
00:16:16,620 --> 00:16:20,540
مع هذا الفهم السريع للمخطط والنموذج

234
00:16:20,540 --> 00:16:26,370
واستخدامه في تحديد بنية مستند نقوم بتخزينه في MongoDB،

235
00:16:26,370 --> 00:16:33,510
دعنا نعود ونفهم المزيد حول ما يوفر Mongoose لنا.

236
00:16:33,510 --> 00:16:39,965
بالإضافة إلى ذلك، يتيح لنا Mongoose إنشاء الاتصال بخادم MongoDB.

237
00:16:39,965 --> 00:16:43,070
يستخدم Mongoose داخليًا

238
00:16:43,070 --> 00:16:46,495
برنامج تشغيل MongoDB الذي استخدمناه في التمرين السابق.

239
00:16:46,495 --> 00:16:49,745
لذا، يعتمد Mongoose على برنامج تشغيل MongoDB، لذلك،

240
00:16:49,745 --> 00:16:53,824
مما يعني أنه من تطبيق العقدة المستندة إلى Mongoose،

241
00:16:53,824 --> 00:16:56,960
يمكنك استخدام جميع الطرق

242
00:16:56,960 --> 00:17:01,040
المتوفرة بالفعل من برنامج تشغيل MongoDB أيضًا إذا اخترت ذلك،

243
00:17:01,040 --> 00:17:05,390
ولكن Mongoose نفسه لديه مجموعته الخاصة من الطرق التي

244
00:17:05,390 --> 00:17:09,940
يمكننا جعلها للتفاعل مع قاعدة بيانات MongoDB،

245
00:17:09,940 --> 00:17:13,645
كما سنرى في التمرين التالي.

246
00:17:13,645 --> 00:17:19,040
اسمحوا لي أن تظهر لكم بإيجاز كيف يمكننا إنشاء اتصال إلى قاعدة البيانات،

247
00:17:19,040 --> 00:17:21,590
وسوف تفعل ذلك في الممارسة التي تلي ذلك.

248
00:17:21,590 --> 00:17:25,280
لذا، تمامًا كما أعلنا عنوان URL في

249
00:17:25,280 --> 00:17:29,160
حالة تطبيق عقدة MongoDB في الدرس السابق،

250
00:17:29,160 --> 00:17:32,630
سنعلن عن عنوان URL لتطبيقنا.

251
00:17:32,630 --> 00:17:36,965
ثم سنستخدم طريقة اتصال Mongoose

252
00:17:36,965 --> 00:17:40,180
وتوفير عنوان URL لطريقة اتصال Mongoose،

253
00:17:40,180 --> 00:17:44,000
وهذا سينشئ الاتصال بقاعدة البيانات.

254
00:17:44,000 --> 00:17:48,590
مع هذا الفهم السريع للنمس والدور الذي

255
00:17:48,590 --> 00:17:53,485
يلعبه Mongoose في دعم الإدراج المنظم

256
00:17:53,485 --> 00:17:58,985
والتخزين واسترجاع الوثائق من MongoDB لدينا،

257
00:17:58,985 --> 00:18:02,180
دعونا ننتقل إلى التمرين حيث

258
00:18:02,180 --> 00:18:07,920
نحصل على بعض الخبرة العملية باستخدام وحدة Mongoose.