Использование mySQL с React: вопросы и проблема с CORS - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь получить доступ к моим данным MySQL в моем приложении реакции.Для этого я использую 2 файла:

Для реакции:

var request = require("request");
var option = {
    url : 'http://localhost:3001/test',
    headers : {
        'Access-Control-Allow-Origin':'*'
    },
    json : true,
    body : {
        option : "myoption"
    },
    mode: 'cors',
    method :"GET"
};

request(option, function (error, response, body) {
    console.log('error:', error);
    console.log('statusCode:', response && response.statusCode);
    console.log('body:', body);
});
ReactDOM.render(<App />, document.getElementById('root'));
serviceWorker.unregister();

Для SQL:

function create_connect(){
    var connection = mysql.createConnection({
        host     : 'localhost',
        user     : 'root',
        password : '',
        database : 'site'
    });
    connection.connect();
    console.log("connected");
    return connection;
}

app.get('/test', function (req, res) {
var connection = create_connect();
console.log(req.body);

connection.query('SELECT * FROM test', function (error, results, fields) {
  console.log(error);
    console.log(results);
    console.log(fields);
  res.send(results)
});

connection.end();
});
app.listen(3001, () => {
 console.log('Launched');
});

Однако я получаю "Error: Invalid value for opts.mode", когда ставлю "mode: 'cors' "или" mode: 'no-cors' "и "Access to fetch at 'http://localhost:3001/test' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled."

, когда я не знаю. Как это исправить?

Кроме того, я использовалправильный синтаксис, чтобы получить body.option правильно? И res.send(result) пойман console.log("body":body)?

1 Ответ

2 голосов
/ 06 мая 2019

В вашем приложении node.js необходимо включить CORS.Если вы используете express.js, вы можете сделать это, используя cors lirbary

npm install cors

И затем включить все запросы CORS:

var express = require('express')
var cors = require('cors')
var app = express()

app.use(cors())

В рабочем режиме вы захотите ограничить запрос CORS только со своего домена.

Более подробную информацию о CORS вы можете найти по этой ссылке .

...