【问题标题】:How to connect MySQL to ReactJS如何将 MySQL 连接到 ReactJS
【发布时间】:2017-12-07 11:01:08
【问题描述】:

如何将 MySQL 连接到 ReactJS?是否有任何示例或教程可以解释这一点?

我写了以下代码,但出现错误:

var React = require('react');
var ReactDOM = require('react-dom');

var mysql = require('mysql');
var express = require('express');
var app = express();

var fs = require('fs');

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

connection.connect();

app.post('/users', function(req, res) {

    var user = req.body;

    var query = connection.query('INSERT INTO signup SET ?', user,  function(err, result) {

    });
    res.end('Success');
});

这段代码有什么问题?

【问题讨论】:

  • 你遇到了什么错误?
  • 两者之间没有任何联系....如果要在后端渲染react,只需从mysql中获取数据,传给react的渲染即可。但是后端没有 react-dom。
  • Reactjs 是一个客户端库。 mysql 数据库是您可以获得的后端。将数据库连接到后端的更好方法是构建 api 服务器。这会隐藏您的敏感数据库信息并减少耦合。
  • 在任务运行器资源管理器中没有错误,但是当我的应用程序在控制台上打开时出现这样的错误 JS.js:40217 Uncaught Error: Cannot find module "fs" at webpackMissingModule (JS.js :40217) 在 Object. (JS.js:40217) 在 webpack_require (JS.js:20) 在 Object. (JS.js:37793) 在 Object. (JS.js:38417) 在 webpack_require (JS.js:20) 在 Object. (JS.js:38440) 在 webpack_require (JS.js :20) 在 Object. (JS.js:33868) 在 webpack_require (JS.js:20)
  • 在尝试使用 React 进行一些服务器端渲染之前,您应该首先设法使用 React 从客户端调用您的 API。为此,您可能需要使用 redux-thunk、redux-saga、mobx 或......我猜你把所有东西都搞混了。另外,要请求您的数据库,我建议您使用 ORM,它会更容易和更清洁。

标签: mysql node.js database reactjs database-connection


【解决方案1】:

你在 cmets 中提到的错误,是因为你试图 require fs 模块,但是默认情况下在 webpack 的前端不存在。当然你可以provide a polyfill 但这不是这里要问的。

所以让我们退后一步。如何连接 MySQL?

连接到 MySQL 的常用方法是建立 TCP 连接,通常 MySQL 驱动程序会为您执行此操作,因此您无需确切知道如何,but this means you can't really connect from Javascript on browser

但是,您可以使用 node.js 或任何其他服务器端语言在后端/服务器端执行此操作。通常这样做的方式是,后端公开一个前端可以访问的 HTTP(s) API。这可能是一个 REST API、GraphQL,甚至是像 SOAP(我不建议这样做)这样复杂的东西,通过这个 API,数据库被暴露出来。这是常见的 Web 应用程序和分层架构中的常见设计。

同时,您可以使用Mysql Labs HTTP plugin,将您的数据库暴露给浏览器,而无需编写自己的任何 API,但当然,如果您走这条路,您必须知道自己在做什么并拥有最高的安全标准。

【讨论】:

    猜你喜欢
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 2017-08-11
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多