#node.js #reactjs #sql-server #api #rest
Вопрос:
Я попытался получить данные из своей среды SQL Server Management Studio. Я уже сделал запрос внутри API, поэтому, когда я получу доступ к этим ссылкам с помощью postman, он получит данные, равные запросу внутри этих ссылок. Но когда я хочу показать данные на странице, они не выводятся, даже если они уже выводятся в журнале консоли. Ошибка всегда меняется, но так и не решена.
Запрос операций с базой данных
const config = require('./dbConfig'); const sql = require('mssql');
async function getRoles() { try { let pool = await sql.connect(/My Configuration Database/); let products = await pool.request().query("SELECT [id],[division] FROM [FMLX_IME].[dbo].[ime.tbl_roles]"); return products.recordsets; } catch(error) { console.log(error); } }
Вот как я вставляю функцию в ссылки API
const express = require('express'); const cors = require('cors'); const app = express(); const bodyParser = require('bodyParser'); const Db = require('./dbOperations'); const router = express.Router(); const PORT = process.env.PORT || 3001; app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use(cors()); app.use('/api', router);
router.use((request, response, next) =gt; { console.log("============ MIDDLEWARE ============"); next(); }); router.route('/get-roles').get((request, response) =gt; { Db.getRoles().then(result =gt; { response.json(result); console.log(result); }); });
Вот как я пытался получить данные, уже перепробовал так много способов, но ничего не работает. Только в том случае, если данные получены успешно, если используется API, который уже подключен или запущен, а не с моего локального хоста. (Уже пробовал использовать axios тоже)
Class ManualTest extends React.Component { constructor(props) { super(props); this.state = { roles: [], isLoaded: false } } componentDidMount() { fetch('http://localhost:3001/api/get-roles') .then(result =gt; console.log(result.json())) .then(res =gt; res.json()) .then(json =gt; { this.setState({ roles: json, isLoaded: true }) }).catch((err) =gt; { console.log(err); }); } render() { const { isLoaded, roles } = this.state; if(!isLoaded) return lt;divgt;Loading...lt;/divgt; return ( lt;div className="App"gt; lt;ulgt; {roles.map(role =gt; ( lt;li key={role.id}gt; ID: {role.id} || ROLE: {role.role} lt;/ligt; ))} lt;/ulgt; lt;/divgt; ); } } export default ManualTest
Комментарии:
1. данные никогда не отображаются, даже если их извлекает журнал консоли. Я уже пробовал использовать другой бесплатный API от Google для целей тестирования, и он работает. Но с использованием моего собственного API localhost этого никогда не случалось.
2. Пожалуйста, помогите, это мой проект стажировки, и я добился незначительного прогресса в этом проекте, потому что я не могу работать с другими материалами, если это все еще не работает.
3. поместите журнал консоли после
fetch('http://localhost:3001/api/get-roles')
того, как увидите, поступают ли данные, вы не регистрируетесь там4. да, данные поступают и отображаются в виде json в журнале консоли. Я добавляю
.then(result =gt; console.log(result.json()))
после получения @AshishKamble5. но все равно он не появится, если я вставлю его в элемент страницы просмотра внутри
lt;divgt;lt;/divgt;
@AshishKamble