Alexander3928
@Alexander3928

Не удалось получить данные из mongoDB, вместо данных я получаю HTML-шаблон.?

Хочу получить данные из mongoDB, коллекцию product, но вместо массива или объекта с данными, получаю HTML шаблон. С чем это может быть связано? База данных подключена, я проверил. Скриншоты ниже.

Сервер запускается по:
const port = process.env.PORT || 8080;
app.listen(port, () => console.log(`listening on port ${port}...`))


model product
const mongoose = require('mongoose');

const productSchema = new mongoose.Schema({
  title: String,
  price: Number,
  quantity: Number,
});

const Product = mongoose.model("products", productSchema);

module.exports = Product;


server
const express = require('express');
const app = express();
const Product = require("./models/Products");

app.get("/api/products", (req, res) => {
  Product.find((error, data) => {
    if (!error) {
      res.status(200).send(data);
    } else {
      res.status(500).send(error);
    }
  });
});


axios с клиентской части
import axios from "axios";

const axiosInstance = axios.create({
  baseURL: 'http://localhost:8080',
});

export default axiosInstance;


client

useEffect(() => {
    const fetchData = async () => {
      const data = await axios.get("/api/products");
      console.log('product >>>', data);
    }
    fetchData();
  }, []);


mongoDB, collection product

656642875badb940210379.png

screenshot

656642a120265486574160.png
  • Вопрос задан
  • 180 просмотров
Решения вопроса 2
Kentavr16
@Kentavr16
long cold winter
Наконец дошло) Так как ты делаешь запрос на локальный адрес, await axios.get("/api/products") , аксиос ищет ресурс относительно корня проекта. У тебя был запущен локальный сервер разработки реакта, и он его поймал каким-то образом. Я сначала сам не понял в чем соль, но установил себе аксиос и сделал локальный запрос, с локальным путем как у тебя. Мне пришел ответ от работающего в данный момент сервера апач, также оформленный как HTML, с той только разницей что там писалось о том что ресурс не найден. Что забавно.
Ответ написан
Alexander3928
@Alexander3928 Автор вопроса
Я нашел решение этой проблемы.
Model.find() больше не принимает callback, поэтому и возникает ошибка. Достаточно указать then после find, и все будет работать Model.find().then((data) => {}))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы