आपके couple
. में मॉडल, person1
एक ऑब्जेक्ट आईडी है (मुझे पता है कि आप इसे जानते हैं), इसलिए इसमें स्पष्ट रूप से कोई संपत्ति नहीं है .firstname
।
वास्तव में इसे प्राप्त करने का सबसे अच्छा तरीका है, उपयोगकर्ता को उसके पहले नाम से ढूंढना, और फिर जोड़े को id
के साथ क्वेरी करना है। उपयोगकर्ता का।
यह विधि couple
में खड़ी हो सकती है/होनी चाहिए एक स्थिर विधि के रूप में मॉडल (सरलीकृत कोड नमूना):
couple.statics.findByPersonFirstname = function (firstname, callback) {
var query = this.findOne()
Person.findOne({firstname: firstname}, function (error, person) {
query.where($or: [
{person1: person._id},
{person1: person._id}
]).exec(callback);
})
return query
}
संपादित करें:यह भी ध्यान दें कि रेफरी _id
. होना चाहिए (इसलिए आप पहले नाम से स्टोर नहीं कर सकते, वैसे भी यह एक बुरा विचार होगा)।
आपके संपादन को ध्यान में रखते हुए:
Person._id
शायद एक String
है और संदर्भ एक ObjectId
है , अगर ऐसा है, तो कोशिश करें:
{person1: mongoose.Types.ObjectId(Person._id)}
साथ ही, आपका वैरिएबल person
है और नहीं person
. लॉग करने का प्रयास करें person
यह देखने के लिए कि क्या आपको कुछ मिलता है।
अंत में, मेरा कोड नमूना वास्तव में सरल है, त्रुटियों और सभी को संभालना न भूलें (ऊपर दिए गए लिंक को देखें, जो पूरा हो गया है)।