节点:控制流,无法使用mongoose将FB好友保存到db

时间:2014-03-03 18:51:56

标签: node.js mongodb express mongoose passport.js

首先感谢您的帮助。我正在尝试拨打facebook api来收集我所有的用户朋友。

passport.use(new FacebookStrategy({
  clientID: config.fb.id,
  clientSecret: config.fb.secret,
  callbackURL: "http://localhost:3000/auth/facebook/callback"
  },
  function(accessToken, refreshToken, profile, done) {
    User.findOne({
      "facebook.id" : profile.id
    }, function(err, user) {
      if (err) {
        return done(err);
      }
      //No user was found... so create a new user with values from Facebook (all the profile. stuff)
      if (!user) {

这是我回复数据的回电

        function viewback(err, data, user) {
          if(err) {
            console.log("Error: " + JSON.stringify(err));
          } else {
            return data;
          }
        }

下面是我为朋友打电话的地方,数据变量在创建用户的调用完成之前没有设置,并且没有保存数据。

        var fbapi = require('facebook-api');
        var client = fbapi.user(accessToken); // do not set an access token
        process.nextTick(function(){
          var data = client.me.friends(viewback);
        });

        user = new User({
          name: profile.displayName,
          username: profile.username,
          profileUrl: profile.profileUrl,
          provider: 'facebook',
          token: accessToken,
          //now in the future searching on User.findOne({'facebook.id': profile.id } will match because of this next line
          facebook: profile._json
          fb_friends: data
        });
        user.save(function(err) {
          if (err) console.log(err);
          console.log('making a new user')
          return done(err, user);
        });
      } else {
        //found user. Return
        console.log('found the user')
        return done(err, user);
      }
    });
}));

我没有收到任何错误,用户保存在数据库中,但没有朋友数据。任何帮助都会很棒。更好的是我可以阅读以了解这个概念。

0 个答案:

没有答案