Je zde řada problémů, na které pravděpodobně narazíte.
Za prvé, týmy jsou vlastnost pole, ale vy k němu přiřazujete objekt. Musíte udělat něco takového:
var user = new users({
userID: id, //give the id of the next user in Dbase
userName: userName,
userEmail: 'userEmail',
teams:[],
socialMedias: [{socialMediaType: socialMediaID}]
});
Za druhé, pokud je socialMediaType předán jako parametr funkce, nemůžete jej použít jako vy. Musíte udělat něco takového:
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]
});
Za třetí, váš findOne nebude fungovat tak, jak je. Z toho, co zde mohu shromáždit o vašem záměru, potřebujete něco takového:
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;
}
Ale za čtvrté, ani to nebude fungovat, protože synchronně vracíte uživatele z metody, která provádí asynchronní operace. Existují různé způsoby, jak to vyřešit, ale můžete začít tím, že si přečtete o slibech nebo předáte funkci zpětného volání do searchUser.