اذهب إلى المحتوى

السؤال

نشر

هذا هو مخطط Mongoose الخاص بي:

const pplSchema = mongoose.Schema({
    id: String,
    person: [
        {
            id: String,
            age: Number,
            gender: String,
            height: String
        }
    ],
    employment: Boolean
});

وذلك هو جسم الطلب JSON الذي أحاول تمريره من خلال Postman كـ PUT:

{
    "humanID": "12345",
    "person": {
        "humanAdultId": "6789",
        "age": 37,
        "gender": "male",
        "height": "5ft"
    }
}

وهذا هو سجل قاعدة البيانات 'human' الذي أحاول تحديثه:

{
    "humanID": "12345",
    "person": [
        {
            "humanAdultId": "4321",
            "age": 21,
            "gender": "female",
            "height": "4ft"
        },
        {
            "humanAdultId": "6789",
            "age": 35,
            "gender": "male",
            "height": "6ft"
        },
        {
            "humanAdultId": "7654",
            "age": 27,
            "gender": "male",
            "height": "5ft"
        }
    ]
}

أحاول استخدام جسم الطلب JSON لتحديث الكائن الثاني في المصفوفة، وأريد تحديث قيمه: العمر والارتفاع.

أريد القيام بذلك عن طريق استدعاء معرف السجل الكلي (humanID) ومن ثم معرف الكائن (humanAdultId) للتنقل إلى الكائن الذي أحتاجه، ولقد قمت بالبحث في مسار $pull و $push ، ولكن يجب أن يكون هناك وسيلة أسهل للقيام بذلك.

فما هو أفضل وسيلة لتحقيق ذلك؟

Recommended Posts

  • 0
نشر (معدل)

يمكنك تجربة هذه الطريقة صديقي:

const mongoose = require('mongoose');

const pplModel = mongoose.model('Person', pplSchema);

const uniqueIdentifier = "12345"; 

// Assuming you have connected to your MongoDB database

const updatedFields = {
  "person.1.age": 40,
  "person.1.height": "5ft 8in"
};

pplModel.updateOne(
  { "id": uniqueIdentifier },
  {
    $set: updatedFields
  }
)

ومع العلم أنه يمكنك تبديل ال updatedFields بال body الذي ستسقبله عند عملية ال PUT، لكي تصبح عملية التعديل ديناميكة ويتم تحديدها الحقول التي سيتم تعديلها عند كل طلب.
 

تم التعديل في بواسطة محمد سعد شحرور

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...