我正在用facebook登錄進行簡單的webapp。在express.js中,res.render()不起作用
如果我的頁面上的Facebook登錄按鈕後,
FB.api(
'/me',
'GET',
{"fields":"id,name,birthday,gender"},
function(response) {
$.post('fb_login', response, "json");
}
);
被調用,並且路由器處理'/ fb_login的要求;在路由器中,服務器檢查json對象的id是否已經在其DB中。如果沒有,應調用res.render('註冊',...)。 但它沒有奏效。我已經檢查過res.render()被調用,但是頁面'signup.jade'沒有顯示出來。
這是我的路由器源代碼。
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
var pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '1012'
});
/* GET home page. */
router.post('/', function(req, res, next) {
var userid = req.body.id;
if (userid) {
pool.getConnection(function(err, connection) {
if (err) {
console.error('DB Connection error!!');
return;
}
console.log('DB Connection Success!!');
connection.query('use vasket');
connection.query('select count(*) result from user where userID=?',
[userid], function(err, result, field) {
var isAlreadyUser = result[0].result;
console.log(isAlreadyUser);
if (isAlreadyUser == 1) {
req.session.userid = userid;
res.redirect('/');
res.end();
console.log('DB FB Login Success!!');
connection.release();
}
else {
connection.release();
console.log('FIRST TIME!');
//This method was called, but the page rendered didn't
res.render('signup', {id: req.body.id, name: req.body.name, birthday: req.body.birthday, gender: req.body.gender});
}
});
});
} else {
res.redirect('/');
res.end();
}
我該如何解決?
有你有什麼錯誤?你確定req.body設置了id,name,...嗎? – Anonymous0day
先試試這個:http://stackoverflow.com/questions/15403791/in-express-js-app-render-vs-res-render-whats-the-difference有一個很好的闡述 –
@ Anonymous0day沒有錯誤。我在客戶端響應json對象,並且鍵(id,name,...)是正確的。 –