تفاصيل المشروع

أنا أعمل على مشروع Social Media backend باستخدام Go + Gin + MongoDB.

عندي نظام Comment + Notification، لكن عندي مشكلة في TargetType (post / reel / comment).

Models:

type TargetType string

const (

Post TargetType = "post"

Reel TargetType = "reel"

Comment TargetType = "comment"

)

Comment model:

type CommentModel struct {

IDprimitive.ObjectID `bson:"_id,omitempty"`

UserIDprimitive.ObjectID `bson:"userId"`

TargetIDprimitive.ObjectID `bson:"targetId"`

TargetTypeTargetType`bson:"targetType"`

Textstring`bson:"text"`

ParentCommentId *primitive.ObjectID `bson:"parentCommentId,omitempty"`

}

المشكلة

عند إنشاء تعليق أو استدعاء:

getTargetOwner()

أحصل على خطأ:

post not found

أو:

invalid target type

أو أحيانًا لا يتم إنشاء notification رغم أن التعليق يتم حفظه في MongoDB.

مثال MongoDB document (Post):

{

"_id": ObjectId("69df5329d0504512468f6c65"),

"content": "content post",

"userId": ObjectId("69df348c78bfa40f070ac1a1"),

"createdAt": "...",

"updatedAt": "..."

}

ما أعتقده سبب المشكلة

TargetType أحيانًا لا يتم تمريره بشكل صحيح من JSON (string vs custom type)

احتمال mismatch بين:

"post" في request

و enum في Go

أو أن switch targetType لا يطابق القيمة فعليًا

أو Mongo query _id لا يطابق ObjectID الحقيقي

مثال request:

{

"targetId": "69df5329d0504512468f6c65",

"targetType": "post",

"text": "hello"

}

المطلوب

أحتاج مساعدة في:

لماذا getTargetOwner لا يجد post رغم أن _id موجود في MongoDB؟

هل مشكلة في TargetType parsing من JSON؟

هل هناك أفضل طريقة لإدارة polymorphic targets (post/reel/comment) في Go؟

لماذا notification sometimes not created؟

ميزانية 30 دولار

حالة المشروع
مُغلق
تاريخ النشر
الميزانية
$25.00 - $50.00
مدة التنفيذ
1 يوم
المهارات

صاحب المشروع
Zen Eddin A.
تاريخ التسجيل
معدل التوظيف
المشاريع المفتوحة 0
مشاريع قيد التنفيذ 0
التواصلات الجارية 4

تقدم للمشروع

العروض المقدمة

احمد م.

السلام عليكم ورحمة الله وبركاته اهلا بحضرتك استاذ زين يمكننى حل مشكلة حضرتك ولكن بحتاج اكسس على الريبو كامل وابشر ان شاء الله مشكلتك تكون محلولة تماما بإذن الله...

مرحبا أستاذ زين الدين اطلعت على تفاصيل مشروع حضرتك والمشكلة التي تواجهها شائعة في الأنظمة التي تعتمد على polymorphic relationsخاصة مع Go Gin MongoDB، وخصوصا عند...

مرحبا أستاذ زين الدين، قرأت تفاصيل المشكلة التي تواجهها في نظام الـ Comments والـ Notifications ، أؤكد لك أن هذه المشكلة مألوفة جدا بالنسبة لي وحلها واضح ومباشر...

السلام عليكم أنا مطور Backend أعمل بشكل أساسي بـ Go وLaravel، واشتغلت قبل كده على Go MongoDB. المشكلة غالبا في تحويل الـ ObjectID أو الـ targetType، فمحتاجة مرا...

قبولك لهذا العرض يعتبر اتفاقاً بينك وبين المستقل وسيبقى موقع مستقل وسيطاً بينكما حتى تسليم المشروع. لن تتمكن من تغيير العرض أو إلغائه لاحقًا لذلك تأكد من اختيارك للعرض المناسب باتّباع النصائح التالية:

  • راجع صفحة حساب المستقل الذي اخترته واطّلع على أعماله السابقة
  • إن كانت هناك تفاصيل غير مذكورة في المشروع، فتواصل مع المستقل وأخبره بها أولًا
  • بإمكانك أن تتواصل مع المستقل وتسأله عن أية أمور تحتاجها
  • احرص دائمًا على إبقاء التواصل مع المستقل داخل الموقع قدر الإمكان وذلك لضمان حقوقك
  • لا تتردد من التواصل معنا ان احتجت لأي مساعدة، نحن نحب مساعدتك!

المستقل غير متاح لاستلام مشاريع، يمكنك ارسال تنبيه له لقبول العرض وإعادة المحاولة بعد بضعة ساعات، أو اختيار عرضاً من مستقل آخر.