Приложение React - невозможно подключиться к SQL базе данных сервера - PullRequest
0 голосов
/ 29 января 2020

Я хочу подключить свою базу данных к моему приложению реакции, однако я очень запутался, как это сделать. Я создал базу данных, используя SQL в SQL Server Management Studio. Я пытался использовать express для подключения его к моему приложению, но я знаю, что в моем коде многое отсутствует. Что мне нужно добавить / изменить в моем коде, чтобы подключить его к моему проекту?

ОБНОВЛЕНИЕ:

enter image description here

Я создал приложение express и написал некоторый код для пользователей. js:

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/', function(req, res, next) {
  res.send('respond with a resource');
});

router.get('/', function(req, res, next) {
  connection.query('SELECT * from project_ideas', function (error, results, fields) {
   if (error) throw error;
   res.send(JSON.stringify(results));
 });
});

module.exports = router;

Я добавил этот код в приложение. js в приложении React:

var React = require('react')
var App = React.createClass({
  getInitialState: function() {
    return {
      members: []
    };
  },
  componentDidMount() {
    fetch('/users')
      .then(res => res.json())
      .then(project_ideas => this.setState({ project_ideas: project_ideas }));
  },
  render: function() {
    return (
        <div className="Ideas">
          <h1>Ideas</h1>
          {this.state.project_ideas.map(project_ideas =>
            <div key={project_ideas.id}>{project_ideas.idea}</div>
          )}
        </div>
    );
  }
});

module.exports = App;

1 Ответ

1 голос
/ 29 января 2020

Вы должны использовать клиент базы данных. Например, мс sql.

Тогда вы можете сделать что-то подобное в пользователях. js:

var express = require('express');
var router = express.Router();
var sql = require('mssql');

const config = {
    user: '...',
    password: '...',
    server: 'localhost', // You can use 'localhost\\instance' to connect to named instance
    database: '...',
}

/* GET users listing. */
router.get('/', (req, res, next) => {
    res.send('respond with a resource');
});

router.get('/project_ideas', async (req, res, next) => {
    let pool = await sql.connect(config)

    let result = await pool.request().query('SELECT * from project_ideas');

    res.send(JSON.stringify(result));
});

module.exports = router;

В поле config введите пользователя , пароль и имя базы данных

Если вы хотите использовать Windows Аутентификацию, вам также необходим пакет msnodesqlv8, как описано здесь в do c.

Так что вам нужно сделать npm install msnodesqlv8, и в вашем коде использовать его вместо обычного ms sql import:

const sql = require('mssql/msnodesqlv8');

и изменить конфигурацию на :

const config = {
    server: 'localhost', // You can use 'localhost\\instance' to connect to named instance
    database: 'Your Database Name',
    options: {
        trustedConnection: true
    }
}

Также вам нужно установить другой маршрут для вашего второго .get, иначе он всегда будет использовать тот, который был объявлен первым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...