2017-06-06 53 views
0

我試圖在添加Facebook身份驗證到我的應用程序使用護照 - 這工作正常,但我需要訪問passport.use()內的數據庫。節點:訪問req.db我無法訪問請求req

這是我在routes/auth.js代碼:

var express = require('express'); 
var router = express.Router(); 
var passport = require('passport'); 
var FacebookStrategy = require('passport-facebook').Strategy; 

[...] 

passport.use(new FacebookStrategy({ 
     clientID: REDACTED, 
     clientSecret: REDACTED, 
     callbackURL: REDACTED, 
     profileFields: ['id', 'displayName', 'email'] 
    }, 
    function(accessToken, refreshToken, profile, cb) { 
     var db = need to access db here; 
     db.users.insertOne({ 'facebookId': profile.id, 'name': profile.displayName, 'email': profile.email }, function(err, user) { 
      return cb(err, user); 
     }); 
    } 
)); 

module.exports = router; 

app.js,我有以下代碼:

// make our db accessible to the router 
app.use(function(req,res,next) { 
    req.db = db; 
    next(); 
}); 

如何訪問在定位auth.jsreq.db標記?

回答

1

如果dbreq對象,可以configue FacebookStrategyreq對象傳遞給verify功能。

參見:

passport.use(new FacebookStrategy({ 
     clientID: REDACTED, 
     clientSecret: REDACTED, 
     callbackURL: REDACTED, 
     profileFields: ['id', 'displayName', 'email'], 
     passReqToCallback: true 
    }, 
    function(req, accessToken, refreshToken, profile, cb) { 
     var db = req.db; // need to access db here; 
     db.users.insertOne({ 'facebookId': profile.id, 'name': profile.displayName, 'email': profile.email }, function(err, user) { 
      return cb(err, user); 
     }); 
    } 
)); 

希望工程。