MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

नेवला उदाहरण .save () काम नहीं कर रहा है जब एम्बेडेड सरणी वस्तु बदली है

समस्या यह है कि नेवला नहीं जानता कि आपकी सरणी संशोधित है।

आप 2 समाधानों का उपयोग कर सकते हैं:

चिह्नितसंशोधित

यह फ़ंक्शन एम्बेड किए गए तत्व को संशोधित के रूप में चिह्नित करेगा और इसे फिर से सहेजने के लिए बाध्य करेगा। यह नेवले को इस तत्व को फिर से सहेजने के लिए कहेगा।

User.findById(userID).exec(function (err, doc) {
        let cardInfo = req.cardInfo
        let cardIndex = req.cardIndex
        doc["cards"][0] = cardInfo;
        console.log(doc)
/*  here I got right doc object as I requested
{
        "_id": "59f3bdd488f912234fcf06ab",
        "email": "[email protected]",
        "username": "test",
        "__v": 2,
        "cards": [
            {
                "testNo": "42424242424242"
            }
        ]
    }
*/
        doc.markModified('cards');
        doc.save(function (err) {
          if (err) {
            return res.json({
              success: false,
              msg: 'Card add error'
            });
          }
          res.json({
            success: true,
            msg: 'Successful updated card.'
          });
        });
})

पूर्ण स्कीमा का उपयोग करें।

मार्कमॉडिफाइड ट्रिक से बचने के लिए, आपको अपने स्कीमा में कार्ड की सामग्री का वर्णन करना चाहिए। इस तरह नेवला यह निर्धारित करने में सक्षम होगा कि उसे खेत को बचाने की जरूरत है या नहीं।

अपनी स्कीमा को ठीक से घोषित करने का तरीका यहां दिया गया है:

const CardSchema = new Schema({
  testNo: String,
});

var UserSchema = new Schema({
    username: {
        type: String,
        unique: true,
        required: true
    },
    email: {
        type: String,
        unique: true,
        required: true
    },
    cards: [CardSchema]
});
module.exports = mongoose.model('User', UserSchema);

इस तरह, नेवला यह पता लगाने में सक्षम होगा कि क्या कार्ड के अंदर एक मूल्य बदल गया है और केवल संशोधित आइटम को सहेजता है।

यदि आप इसे (स्थिर स्कीमा) कर सकते हैं, तो यह स्पष्ट रूप से इसे करने का अच्छा तरीका है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:संग्रह में प्रत्येक दस्तावेज़ को अद्यतन करना

  2. एक वेबसाइट सेवा द्वारा उपयोग के लिए मोंगो/मेमकैच्ड में स्पार्क डेटा लोड करें

  3. नोड जे एस नेवला आबाद सीमा

  4. ब्लूबर्ड और टाइपस्क्रिप्ट के साथ नेवला वादा

  5. JSON डेटा निर्यात करें और एक रिलेशनल डेटाबेस में लोड करें