猫鼬+ Everyauth奇怪的行为

时间:2011-08-24 00:55:00

标签: mongodb node.js express mongoose

使用everyauth,当我在网站上的用户之前使用从未进行过autenticated登录时,会启动以下代码。检查用户是否已经在我的mongodb中,如果没有,则写入。现在的问题是适用于第一个经过身份验证的用户,然后如果第二个用户登录,我的joinedUser._id参数被正确启动,但我的架构的所有其他参数都来自第一个保存的用户,就像我的参数一样从来没有重新初始化...很奇怪,我的console.log显示正确的新参数,而不是实际写入数据库的内容。我的身份验证是通过everyauth模块完成的,我使用了快速框架。

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);
        } 
      });
    }
  });
};

2 个答案:

答案 0 :(得分:3)

使用mongoose-auth。它为您提供猫鼬和Everyauth的组合。

答案 1 :(得分:1)

使用强制值分配_id似乎存在问题。所以我为个人资料特定id创建了另一个id(例如:facebookId)。