أنا أعمل على مشروع 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 دولار
| تاريخ التسجيل | |
| معدل التوظيف | |
| المشاريع المفتوحة | 0 |
| مشاريع قيد التنفيذ | 0 |
| التواصلات الجارية | 4 |
السلام عليكم ورحمة الله وبركاته اهلا بحضرتك استاذ زين يمكننى حل مشكلة حضرتك ولكن بحتاج اكسس على الريبو كامل وابشر ان شاء الله مشكلتك تكون محلولة تماما بإذن الله...
مرحبا أستاذ زين الدين اطلعت على تفاصيل مشروع حضرتك والمشكلة التي تواجهها شائعة في الأنظمة التي تعتمد على polymorphic relationsخاصة مع Go Gin MongoDB، وخصوصا عند...
مرحبا أستاذ زين الدين، قرأت تفاصيل المشكلة التي تواجهها في نظام الـ Comments والـ Notifications ، أؤكد لك أن هذه المشكلة مألوفة جدا بالنسبة لي وحلها واضح ومباشر...
السلام عليكم أنا مطور Backend أعمل بشكل أساسي بـ Go وLaravel، واشتغلت قبل كده على Go MongoDB. المشكلة غالبا في تحويل الـ ObjectID أو الـ targetType، فمحتاجة مرا...