• 1400/02/23

مدل های تودرتو :

سلام استاد وقت به خیر

توی mongoose این امکان وجود نداره که مدل هامون رو تودرتو استفاده بکنیم؟

مثلا برای هر یوزر آرایه ای از مدل پست رو بزاریم که مربوط به اون شخص هست.

یا اگر قسمت کامنت رو به پست ها اضافه کنیم برای هر پست ارایه ای از کامنت رو توش ذخیره کنیم؟

این امکان وجود نداره؟چونکه فک کنم اینجوری سرعت برنامه بره بالاتر چون دیگه برای نمایش پست های یک کاربر لازم نیست که کل پست هارو بررسی بکنیم یا همچین عملیات هایی.

  • 1400/02/25
  • ساعت 15:10

سلام 

با کسب اجازه از استاد قربانی ..

بله تا جایی که من کار کردم میشه توی model بیای و آرایه ایجاد کنی 

مثلا برای محصولات و سبد خرید برای هر کاربر یک آرایه که به model محصول اشاره داره 

getPrudect: [{ prudectId: { type: Schema.Types.ObjectId, ref: 'Prudect' } }] 

  • 1400/02/25
  • ساعت 18:48

ممنون دوست عزیز

فقط سوال دیگه اینکه این روش بهتره؟که پست های هر کاربر یا کامنت های هر پست رو توی خودش ذخیره کنیم؟


  • 1400/02/25
  • ساعت 19:31

سلام 

این رو من نمیدوم که کدوم روش استاندارد بهتری داره .

ولی model هایی که دیدم و بررسی کردم به این شکل نوشته بودن و کامنت های هر پست توی خود پست ذخیره شده بود .

من از این مورد برای این زمانی استفاده میکنم که کاربر محصول خریداری میکنه و به سبد خرید اضافه میکنه .

یا برای زمانی که تیکت ارسال میشه  .


  • 1400/02/30
  • ساعت 13:57

با سلام و با اجازه از استاد و دوستان

روش ازین قراره که شما میاید داخل هر پست یه فیلدی به اسم comments تعریف میکنید که از نوع ObjectId هست  همونطور که دوستمون گفتن ، بعدش این فیلد رفرنس داده می شه به یه مدل دیگه مثلا به مدل comment. حالا داخل مدل کامنت ، علاوه بر متن پیام ، ما داریم یه postedBy و یک postedTo که اولی یه آبجکت آیدی به مدل یوزرمون متصل میشه و postedTo به مدل پست هامون.
به این روش میگن Referencing و یه روش دیگه هم هست که میگن embedded که داخل فیلد کامنت درون هر پست یه آرایه ای از کامنت هایی که منتشر شده برای اون پست نشون داده میشه.
که روش دوم به نظرم برای اینکه ببینیم کدوم کامنت دقیقا کامنت کدوم یکی از جوابها هست شاید چالش داشته باشید ولی روش رفرنسینگ خیلی ساده تر هست.
 


  • 1400/02/30
  • ساعت 20:47

سلام.ممنون از نظر و کمکت خیلی مفید بود.

فک کنم هرکدوم برای یک سری عملیات ها بهتر باشن ولی در کل رفرنسی برای برنامه نویس راحت تر باشه پیاده سازیش درسته؟


  • 1400/03/02
  • ساعت 15:55

سلام خواهش میکنم خیلیم عالی که مفید بود.
درسته شاید یه جاهایی embedded هم خوب عمل کنه بالاخره برنامه نویسی همونجور که میدونید خیلی گسترده ست و قطعی نمیشه نظر داد ولی به شخصه من خودم با رفرنسینگ راحت تر هستم.
راستی یکی دیگه از نقاط مثبت رفرنسینگ که فراموش کردم بگم scalable شدن کدت میشه شما در نظر بگیر از یه داکیومنت مثل  users توی چندین داکیومنت دیگه قصد داری استفاده کنی. حالا اگه یه جای کار اگه داکیومنت user ت عوض بشه باید بری تک تک جاهایی که ازش استفاده کردی عوض کنی توی روش embedded ولی توی روش رفرنسینگ فقط کافیه توی همون user رو عوض کنی تا هرجای پروژه که استفاده شده اصلاح بشه.
همونجور که گفتم من که فقط از این روش استفاده میکنم درحال حاضر حالا شاید یجایی پیش بیاد که آدم از روشهای دیگه استفاده کنه یا این که روشهای جدیدی ابداع بشه.


logo-samandehi