2015-10-16 26 views
1

正如標題所示,我無法從connection.query()函數以外的MySQL響應中訪問對象。如何將MySQL JSON對象從connection.query()傳遞給res.render()

router.get('/', function(req, res) { 

    var testimonials; 

    // Running database queries 
    connection.query('SELECT * FROM testimonials', function(err, rows, fields) { 
     if (!err) { 
      testimonials = rows; 
      console.log(testimonials); // THIS WORKS 
     } 
     if (err) { 
      console.log('Error performing database query.'); 
     } 
    }); 


    res.render('index', { 
     title: 'Title', 
     description: 'Description in here.', 
     testimonials: testimonials // THIS RETURNS UNDEFINED 
    }); 
}); 

回答

0

你應該把你的res.render的回調函數內,如:

router.get('/', function(req, res) {  
    var testimonials; 

    // Running database queries 
    connection.query('SELECT * FROM testimonials', function(err, rows, fields) { 
     if (!err) { 
      testimonials = rows; 

      res.render('index', { 
       title: 'Title', 
       description: 'Description in here.', 
       testimonials: testimonials // this will work!!! 
      }); 
     } 
     if (err) { 
      console.log('Error performing database query.'); 
     } 
    }); 
}); 

注意:你undefined當您使用testimonials回調函數之外,因爲該方法connection.query是異步的,它會運行經過您的res.render方法。

+0

工程就像一個魅力。謝謝! – jacobwarduk

+0

@jacobwarduk如果我的回答對你有用,請點擊upvote/downvote箭頭下方的'V'標記爲已接受。謝謝! :) – Buzinas

+0

是的,那伎倆:) – jacobwarduk