Попытка найтиById, но сервер не возвращает правильный ответ о состоянии - PullRequest
0 голосов
/ 23 июня 2019
  1. Попытка использовать метод Axios.get для получения ': id' S̶e̶r̶v̶e̶r̶ ̶i̶s̶ ̶r̶e̶s̶p̶o̶n̶d̶i̶n̶g̶ ̶w̶i̶t̶h̶ ̶a̶ ̶4̶0̶4̶
  2. В настоящее время я не могу установить состояние компонента. Я получаю пустой объект

Я пытался настроить параметры контроллера, но не могу понять,

loadProfile() {
        axios.get('http://localhost:3000/api/companies/' + this.props.match.params.id)
            .then(res => {
                if (!res) {
                    console.log("404 error, axios cannot get response");
                } else {
                    console.log(res.data);
                    this.setState({ company: res.data });
                }
            });

Экспресс API-маршрут

companyRoutes.route('/:id').get(company_controller.company_id_get);

экспресс-контроллер

exports.company_id_get = (req, res) => {
    const id = req.params.id;
    Company.findById( id, (company, err) => {
        if(err) {
            console.log("404 error", err);
        }
        else {
            res.json(company);
        }
    })
}

Серверный код


'use strict';

const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const cors = require('cors')
const passport = require('passport');

const app = express();
const users = require('./routes/api/users');
const companyRoute = require('./routes/api/companies');

app.use(express.static("static"));
//Bodyparser middleware

app.use(cors());
app.use(
        bodyParser.urlencoded({
        extended: false
    })
);
app.use(bodyParser.json());

// DB configuration
const db = require("./config.scripts/mongoKey").mongoURI;

// Connect to MonngoDB
mongoose.connect(
    db, { useNewUrlParser: true }
)
    .then((db) => console.log('MongoDB succesfully connected'))
    .catch(err => console.log(err));

//Passport middleware
app.use(passport.initialize());

//Passport config
require('./config.scripts/passport.js')(passport);

//Routes
app.use('/api/users', users);
app.use('/api/companies', companyRoute);

//Redirect any server request back to index.html: To deal with CRS
app.get('/', function(req, res, next){
    res.sendFile(path.join(__dirname, '../client', 'index.html'));
})

//Hostname and Port
//const hostname = '127.0.0.1';
const port = 3000;

app.listen(port, () => {
    console.log(`Backend server is running at http://localhost:${port}/`);
});

Ошибка, которая появляется в консоли / сети и почтальоне. Похоже, что запрос http.get останавливается

1 Ответ

0 голосов
/ 24 июня 2019

Кажется, вы забыли / в своем маршруте http:/localhost:3000/api/companies/.... Измените его на http://..., и это должно решить вашу проблему.

...