Có một số vấn đề ở đây mà bạn có thể gặp phải.
Đầu tiên, nhóm là một thuộc tính mảng, nhưng bạn đang gán một đối tượng cho nó. Bạn cần làm như sau:
var user = new users({
userID: id, //give the id of the next user in Dbase
userName: userName,
userEmail: 'userEmail',
teams:[],
socialMedias: [{socialMediaType: socialMediaID}]
});
Thứ hai, nếu socialMediaType được chuyển vào dưới dạng một tham số chức năng, bạn không thể sử dụng nó như cách bạn đang làm. Bạn cần làm như sau:
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]
});
Thứ ba, findOne của bạn sẽ không hoạt động như hiện tại. Từ những gì tôi có thể thu thập được về ý định của bạn ở đây, bạn cần một cái gì đó như thế này:
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;
}
Nhưng thứ tư, ngay cả điều đó sẽ không hoạt động bởi vì bạn đang trả về người dùng một cách đồng bộ từ một phương thức thực hiện và hoạt động không đồng bộ. Có nhiều cách khác nhau để giải quyết vấn đề đó, nhưng bạn có thể bắt đầu bằng cách đọc về các lời hứa hoặc chuyển một hàm gọi lại vào searchUser.