2016-01-11 78 views
0

我有這條路線在我的服務器端代碼設置:發佈到內部服務器端代碼路徑

//Recieves facebook login info. 
app.post("/login", function(req, res){ 
var request = req.body; 
console.log("IN LOGIN + " + request); 
var userInfo = { 
    "name":request.name 
} 

    //Check if user already exists in database. 
    con.query("SELECT * FROM user",function(err,rows){ 
     var existingUsers = rows; 
     for(var i = 0 ; i < existingUsers.length ; i ++){ 
      if(existingUsers[i].name == userInfo.name){ 
       console.log("USER exists"); 
       break; 
      } else if (i < existingUsers.length-1){ 
      con.query("INSERT INTO user SET ?",userInfo,function(err, res){ 
       if(err){ 
        console.log("**Error posting todos to database**"); 
        throw err; 
       } 
       }); 
       console.log("USER created"); 
       break; 
      } 
     } 
    }); 
}); 

在我的服務器端代碼的另一部分,我有這樣的:

passport.use(new FacebookStrategy({ 
    clientID: 'xxxxx', 
    clientSecret: 'xxxxxxxxxxxxx', 
    callbackURL: 'http://www.localhost:3000/auth/facebook/todoPage' 
}, 
function(accessToken, refreshToken, profile, done) { 


    var name = profile.displayName; 

    userSession = true; 
    done(null,profile); 
} 
)); 

哪有我發這個名字給我的路線登錄我的服務器端代碼中(這樣我就可以把它接入到它在我的REQ在路由變量)以類似的方式,而我在我的客戶端送東西給我的路線代碼:

$.post("login", object, function (response){}); 
+0

你的代碼的一部分,你有這樣的「變量名稱=‘鄧肯’;」?它在同一個文件中嗎?這個變量的範圍是什麼? –

+0

@ViniciusZaramella路線設置的上方,以及「變種名稱=提米」是在同一個文件(app.js,我的服務器端代碼)。變量**名稱**是全局的。 – coders

+0

所以如果我的變量是在你的路由定義之前聲明的,它就在你的處理函數的範圍之內。你應該可以直接訪問它。 –

回答

1

首先你不應該嘗試在req參數中放入與請求無關的內容。

一個選項是讓您的應用程序一樣,裏面的名字變量。

app.facebookName = "foo" 

這不是非常模塊化,與全局變量差別不大。 但是,如果你把所有的東西放在同一個文件中(你不應該),那是一個選項。

另一種選擇是分裂在另一個文件中,出口只能從它的變量名稱代碼。

//facebook_profile.js 
var facebookName = "" 
module.exports = { 
    setName : function(name){ 
     facebookName = name; 
    }, 
    getName : function(){ 
     return facebookName; 
    } 
} 

在你的app.js中,你可以像這樣訪問你的代碼的兩個不同部分的名稱。

var fbProfile = require("facebook_profile.js") 
//Recieves facebook login info. 
app.post("/login", function(req, res){ 
    name = fbProfile.getName(); 
} 

passport.use(new FacebookStrategy({ 
    clientID: 'xxxxx', 
    clientSecret: 'xxxxxxxxxxxxx', 
    callbackURL: 'http://www.localhost:3000/auth/facebook/todoPage' 
}, 
function(accessToken, refreshToken, profile, done) { 

    fbProfile.setName(profile.displayName); 
    userSession = true; 
    done(null,profile); 
} 
)); 

我仍然會走得更遠我嘗試把整個passaport的東西放在另一個文件裏面。

+0

好主意謝謝 – coders

相關問題