2015-11-04 3 views
1

Я делаю простой webapp с входом в facebook.В express.js, res.render() не работает

Если кнопка facebook Войти на моей странице щелкают,

FB.api(
    '/me', 
     'GET', 
     {"fields":"id,name,birthday,gender"}, 
     function(response) { 
     $.post('fb_login', response, "json"); 
     } 
    ); 

называется, и маршрутизатор обрабатывает '/ fb_login' запрос; в маршрутизаторе сервер проверяет, что идентификатор объекта json уже находится в его БД. Если нет, необходимо вызвать res.render ('signup', ...). Однако это не сработало. Я уже проверил, что 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(); 
} 

Как это исправить?

+0

у вас есть какие-либо ошибки? вы уверены, что req.body установлен с идентификатором, именем, ...? – Anonymous0day

+0

Попробуйте это сначала: http://stackoverflow.com/questions/15403791/in-express-js-app-render-vs-res-render-whats-the-difference Существует хорошая разработка –

+0

@ Anonymous0day Ошибка отсутствует , Я положил json объект в ответ на клиенте, и ключи (id, name, ...) верны. –

ответ

0

Для отладки может быть, вы можете изменить свой код так:

// ... your code before 

      else { 
       connection.release(); 
       console.log('FIRST TIME!'); 


       console.log(req.body); 


       //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 
        } , 
        function(err, html){ 
        if(err) console.log(err); 

        console.log(html);       
        //res.send(html); 
        // trying same but forcing status 
        res.status(200).send(html); 
        } 
       ); 
      } 
     }); 
    }); 
} else { 
    res.redirect('/'); 
    res.end(); 
} 
+0

Спасибо. Однако работает только 'console.log (html)', res.send (html) ', похоже, не работает. Новый вид не отображается ... Что мне делать? –

+0

попробуйте с принудительным статусом, я обновил свой ответ: 'res.status (200) .send (html);' – Anonymous0day

Смежные вопросы