यहां कई समस्याएं हैं जिनका आप सामना कर रहे हैं।
सबसे पहले, टीम एक सरणी संपत्ति है, लेकिन आप इसे एक ऑब्जेक्ट असाइन कर रहे हैं। आपको कुछ ऐसा करने की ज़रूरत है:
var user = new users({
userID: id, //give the id of the next user in Dbase
userName: userName,
userEmail: 'userEmail',
teams:[],
socialMedias: [{socialMediaType: socialMediaID}]
});
दूसरा, यदि सोशलमीडिया टाइप को फ़ंक्शन परम के रूप में पास किया जाता है, तो आप इसका उपयोग नहीं कर सकते जैसे आप कर रहे हैं। आपको कुछ ऐसा करने की ज़रूरत है:
var socialMedias = {};
socialMedias[socialMediaType] = socialMediaID;
var user = new users({
userID: id, //give the id of the next user in Dbase
userName: userName,
userEmail: 'userEmail',
teams:[],
socialMedias: [socialMedias]
});
तीसरा आपका खोज जैसा है वैसा काम नहीं करेगा। मैं यहां आपके इरादे के बारे में जो कुछ भी इकट्ठा कर सकता हूं, आपको कुछ इस तरह की जरूरत है:
function searchUser(socialMediaID, socialMediaType){
var user
var query = {};
query["socialMedias."+socialMediaType] = socialMediaID;
users.findOne(query, function(err, userFound){
if(err) return handleError(err);
user = userFound;
});
//what does MongoDb return if it does not find the document?
return user;
}
लेकिन चौथा, यहां तक कि यह भी काम नहीं करेगा क्योंकि आप एक विधि से उपयोगकर्ता को सिंक्रोनस रूप से वापस कर रहे हैं जो एसिंक्रोनस ऑपरेशन करता है। इसे हल करने के कई तरीके हैं, लेकिन आप वादों के बारे में पढ़कर, या कॉलबैक फ़ंक्शन को searchUser में पास करके शुरू कर सकते हैं।