2012-08-30 10 views
7

यह प्रश्न स्पष्ट करने के लिए डेटाबेस से डेटा लोड करने से संबंधित है, डेटाबेस में दस्तावेज़ अपडेट नहीं कर रहा है।आप एक मोंगोज़ दस्तावेज़ में डेटा को रीफ्रेश कैसे करते हैं जो पहले ही लोड हो चुका है?

निम्न स्कीमा के साथ:

new mongoose.Schema 
    name: String 
    code: 
    type: String 
    index: 
     unique: true 
    _contacts: [ 
    type: mongoose.Schema.Types.ObjectId 
    ref: 'Person' 
    ] 

मैं इतनी तरह मेरे दस्तावेज़ बना लिया है:

client = new Client code:'test',name:'test competition',contacts:[] 
client.save() 

आवेदन में या एक API कॉल के माध्यम कहीं और, कहीं है कि यह आसानी से उल्लेख नहीं कर सकते

Client.findOne(code:'test').exec (err,client) -> 
    return if err or not client 
    client._contacts.push person.id # person has come from somewhere 
    client.save (err) -> 
    return err if err 

यदि हम अपने मूल clien पर लौटने: ऊपर संस्करण कैश्ड को टी ऑब्जेक्ट जो मैं जानना चाहता हूं वह है कि उस ऑब्जेक्ट को पूरे दस्तावेज़ या केवल एक विशेष पथ के लिए रीफ्रेश करने का कोई तरीका है। उदाहरण के लिए;

client.refresh '_contacts', (err) -> 
    return err if err 

या यह वैश्विक स्तर पर संदर्भित केवल एक वस्तु को बनाए रखने के लिए बेहतर अभ्यास होगा?

उत्तर

8

सर्वोत्तम अभ्यास केवल मोंगोज़ मॉडल उदाहरण को client जैसे ही सक्रिय रूप से उपयोग कर रहे हैं, ठीक है क्योंकि यह डेटाबेस में जो भी हो, उससे आसानी से सिंक हो सकता है। संभावित रूप से पुरानी प्रतियां रीफ्रेश करने की कोशिश करने के बजाय findOne का उपयोग करते समय आपको client ऑब्जेक्ट को मनोरंजन करें।

संबंधित मुद्दे