2017-04-30 4 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を呼び出しているように見えます。そうしないと、サーバーからレンダリングするためにreactを使用しようとしています。さらに、dbクエリが非同期的に発生するという事実を考慮していません。このコードにはバグがあります。おそらく、あなたが助けが必要な地域を絞り込んで、それを質問してみることができます。 –

+0

私はサーバからレンダリングするためにreactを使いたいです。 – nnL

答えて

0

私が反応すると、レンダリングサーバ側のニュアンスに精通していないです、しかし、あなたのコードを1つの際立っている明白な問題があります。私はこれを修正することですべての作業が可能になるかどうかはわかりませんが、この問題ではうまく動作しません。

getArticlesは何も返さない関数ですが、何かを返す関数であるかのように呼びます。今度は、この関数にreturn文を追加しても、データベースへの呼び出しが非同期で行われるため、未定義のまま返されます。これは、データが実際にdbから取得される前に関数が返されることを意味します。この関数は少なくとも、コールバックを渡す必要があります。そうしないと、mysql-promiseライブラリを参照して代わりに使用することができます。