使用Everyauth,当我在我的网站上以从未被autenticated的用户登录时,将启动以下代码。检查用户是否已经在我的MongoDB中,如果没有,则写入它。现在的问题是,这对第一个经过身份验证的用户有效,然后如果第二个用户登录,我的joininguser.\u id参数将正确启动,但我的架构的所有其他参数都来自第一个保存的用户,这就像我的参数永远不会重新初始化一样……奇怪的是,我的console.log显示了正确的新参数,而不是数据库中实际写入的参数。我的身份验证是通过everyauth模块完成的,我使用express框架。
exports.findOrCreateFacebookUser = function(fbUserData, promise){
User.findOne({_id:fbUserData.id}, function(err, user) {
if(err) {
console.log("Error in finding user for auth. Check Db");
promise.fail(err);
return;
}
else if(user){
console.log("User found ");
promise.fulfill(user);
}
else{
var joiningUser = new User();
joiningUser._id = fbUserData.id;
joiningUser.firstName = fbUserData.first_name;
joiningUser.lastName = fbUserData.last_name;
joiningUser.email = fbUserData.email;
//console.log(JSON.stringify(joiningUser));
joiningUser.save(function(err){
if(err){
console.log("Couldnt save new user: " + err);
promise.fail(err);
return;
}
else{
console.log("User wasnt existant, it is now created: " + JSON.stringify(joiningUser));
promise.fulfill(joiningUser);
}
});
}
});
};
最佳答案
使用mongoose-auth。它为你照顾猫鼬和长毛猴的结合。