MySQL中的node.js来自react.js

我做我的第一个Web应用程序与节点和reacc。 我在node.js中执行sql查询并在我的页面中显示html元素。 我需要帮助获取我的HTML页面中的sql的结果作为JSONdate。 我把一些代码放在我的实验中,这可能是非常错误的。 问候。

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; 

我不熟悉服务器端渲染的反应,但是有一个明显的问题突出你的代码。 我不知道如果修复这将使所有的工作,但它肯定不会在这个问题上工作。

getArticles是一个函数,它不返回任何东西,但是你可以把它作为一个函数返回。 现在,即使你要为这个函数添加一个return语句,它仍然会返回undefined,因为对数据库的调用是asynchronous发生的。 这意味着该函数将在从数据库实际检索数据之前返回。 这个函数至less需要传入一个callback函数,否则你可以查看mysql-promise库来代替。