शायद यह समय है, शायद यह मुझे विरल प्रलेखन में डूब रहा है और मानसून में अद्यतन करने की अवधारणा के आसपास मेरे सिर को लपेटने में सक्षम नहीं है :)
यहाँ सौदा है:
मेरे पास एक संपर्क स्कीमा और मॉडल (छोटा गुण है):
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var mongooseTypes = require("mongoose-types"),
useTimestamps = mongooseTypes.useTimestamps;
var ContactSchema = new Schema({
phone: {
type: String,
index: {
unique: true,
dropDups: true
}
},
status: {
type: String,
lowercase: true,
trim: true,
default: 'on'
}
});
ContactSchema.plugin(useTimestamps);
var Contact = mongoose.model('Contact', ContactSchema);
मुझे क्लाइंट से एक अनुरोध प्राप्त होता है, जिसमें मुझे उन फ़ील्ड्स की आवश्यकता होती है जो मेरे मॉडल का उपयोग करते हैं और इसके अनुसार:
mongoose.connect(connectionString);
var contact = new Contact({
phone: request.phone,
status: request.status
});
और अब हम समस्या तक पहुँचते हैं:
- अगर मैं कॉल करता
contact.save(function(err){...})
हूं तो मुझे एक त्रुटि मिलेगी यदि उसी फोन नंबर के साथ संपर्क पहले से मौजूद है (जैसा कि अपेक्षित है - अद्वितीय) - मैं
update()
संपर्क पर कॉल नहीं कर सकता , क्योंकि यह विधि किसी दस्तावेज़ पर मौजूद नहीं है - यदि मैं मॉडल पर अपडेट को कॉल करता हूं:
Contact.update({phone:request.phone}, contact, {upsert: true}, function(err{...})
मैं कुछ प्रकार के अनंत लूप में आता हूं, क्योंकि Mongoose अपडेट कार्यान्वयन स्पष्ट रूप से दूसरे पैरामीटर के रूप में ऑब्जेक्ट नहीं चाहता है। - यदि मैं ऐसा ही करता हूं, लेकिन दूसरे पैरामीटर में मैं अनुरोध गुण के एक सहयोगी सरणी को पास
{status: request.status, phone: request.phone ...}
करता हूं - यह काम करता है - लेकिन फिर मेरे पास विशिष्ट संपर्क का कोई संदर्भ नहीं हैcreatedAt
और इसके औरupdatedAt
गुणों का पता नहीं लगा सकता है ।
तो नीचे की रेखा, आखिरकार मैंने कोशिश की: एक दस्तावेज दिया contact
, मैं इसे कैसे अपडेट करूं अगर यह मौजूद है, या इसे जोड़ नहीं तो क्या होगा?
आपके समय के लिए धन्यवाद।
pre
के लिएsave
?