2017-04-30 28 views
2

我使用節點和reacc創建我的第一個Web應用程序。 我在node.js中執行sql查詢並在我的頁面中顯示html元素。 我需要幫助在我的html頁面中獲取sql的結果作爲json日期。 我把一些代碼放在我的實驗中,這可能是非常錯誤的。 此致敬禮。來自html的node.js的MySQL結果通過react.js

var React = require('react'); 
 
var DefaultLayout = require('./layout/master'); 
 

 
var mysql = require('mysql'); 
 

 
var connection = mysql.createConnection({ 
 
    port: '3301', 
 
    host: 'localhost', 
 
    user: 'root', 
 
    password: 'root', 
 
    database: 'nodedb', 
 
}); 
 
connection.connect(); 
 

 
function getArticless() { 
 
    connection.query('select * from articles', function(err, result) { 
 
     if (err) 
 
      JSON.stringify(err); 
 
     else 
 
      JSON.stringify(result); 
 
    }); 
 
} 
 

 
const jsonArticles = getArticless(); 
 

 
var IndexComponent = React.createClass({ 
 
    render: function() { 
 
     return (
 
      <DefaultLayout name={this.props.name}> 
 
       <div> 
 
        {jsonArticles } 
 
       </div> 
 
      </DefaultLayout> 
 
     ) 
 
    } 
 
}); 
 

 
module.exports = IndexComponent;

+0

從你發佈的代碼來看,你很難清楚你想達到的目標。它看起來像是你從客戶端調用數據庫,否則你試圖使用反應從服務器進行渲染。此外,你沒有考慮到db查詢異步發生的事實。這段代碼似乎充滿了bug。也許你可以嘗試縮小你需要幫助的範圍,並將其作爲一個問題。 –

+0

我想使用react從服務器進行渲染。 – nnL

回答

0

我不熟悉服務器端與反應呈現細微的差別,但有是你的代碼中脫穎而出一個突出的問題。我不知道如果解決這個問題將會使它工作,但它肯定不會解決這個問題。

getArticles是一個函數,它不返回任何內容,而是將其稱爲返回值的函數。現在,即使你要爲這個函數添加一個return語句,它仍然會返回undefined,因爲對數據庫的調用是異步發生的。這意味着該函數將在從數據庫實際檢索數據之前返回。這個函數至少需要傳入一個回調函數,否則你可以查看mysql-promise庫並使用它。