با سلام خدمت استاد قربانی عزیز و آقا مهدی گل
من یک اسکیما دارم به این صورت:
mongoose.Schema({
routinName: { type: String, unique: true, trim: true },
requestUsers: {},
confirmationUsers: {},
createdAt: { type: Date, default: Date.now() },
userCreated: { type: mongoose.Types.ObjectId, required: true },
});
و يك اسكيماي ديگر به اين صورت:
new Schema({
title:{type:String,required:true},
description:{type:String,required:true},
routin:{type:mongoose.Types.ObjectId,ref:"Routins"},
filename:{type:String,required:true},
userCreated:{type:mongoose.Types.ObjectId,ref:'User'},
createdAt:{type:Date,default:Date.now()}
})
داخل confirmationUsers اولی یک آرایه ای از آبجکت ها قرار میگیره
حالا ميخوام فيلد routin در اسکیمای دومی كه به اسكيماي اولي رفرنس داده شده رو ويرايش كنم ولي اگر ويرايش كنم بقيه داكيومنت هايي كه رفرنس داده شدن هم تغيير ميكنن
در واقع ميخوام از confirmationUsers اولي يك كپی داخل اسکیمای دومی داشته باشم
اما فقط آی دی دارم رفرنس دادم
ممنون میشم راهنماییم کنید
سلام وقت بخیر
خب شما توی اسکیمای دوم ایدی رو قرار دادی و هرجا نیاز باشه که ویرایش کنی براحتی فقط همون اسیکما مد نظر رو با ایدی که داری پیدا میکنی و ویرایش میکنی دیگه اگر هم نیاز به اطلاعاتش داشته باشه populate میکنی
تغییری هم بخوای بدی به این صورت
const routin = await Routin.findOne({_id:id})
routin.routinName = 'aaaa'
await routin.save()
برای ویرایش اسیکمای دومی هم به همین صورت
const schemaDovomi = await DOVOMI.findOne({routin:id})
....
با سلام خدمت آقا مهدی
خب دیگه ممکن هست داکیومنت های دیگه ای هم به این آی دی رفرنس داده شده باشند با ویرایش اون روی بقیه هم تاثیر میذاره
من میخوام یجورایی یه کپی از اون اولی توی دومی داشته باشم که منحصر به خود داکیومنت باشه بعد هرجور خواستم ویرایشش کنم
اگر برنامت جوری پیاده سازی شده که چندجا رفرنس داده میشه و وقتی یک جا وقتی تغییر کنه جاهای دیگه هم تغییر میکنه
+یه راهش اینه همه اون فیلد هارو توی مدل دومی هم تعریف کنی و مقدار بدی بهشون تا مختص خودشون باشه , تغییر هم بدی فقط مقادیری که میخوای تغییر میکنه
+ mongoose virtual , فیلد مجازی هست اما فکر نمیکنم برای اینکارت جواب بده یه فیلد مجازی بهت میده که خودت مشخص میکنی به کدوم مدل و کدوم فیلد و... امتحان کن هردو روش رو
و اینکه بزار استاد هم جواب بده , استاد بهتر راهنماییت میکنه
بله حتما
ممنون از جواب شما
منتطر جواب استاد هم میمونم تا بعد ببینم چه میکنم
تشکر
سلام دوست من
خوب اگر کپی داشته باشی جای دیگه اگر به اولی موردی اضافه بشه پشت سر هم باید ازش کپی بگیری تا دومی رو بروز نگهداری و این فکر نمیکنم راه درستی باشه
مانگو زیاد در این زمینه ها پیشرفته نیست
حتما راه حلی هست که بتونی بخشی رو جابجا کنی