Я пытаюсь передать данные из моей локальной коллекции MongoDB во внешний интерфейс моего приложения для тестирования.
У меня проблемы с попыткой заставить мой интерфейс разговаривать с моим бэкэндом.
Я пытался изменить параметры в моем маршруте "getData" ... и я думаю, что я немного обернулся.
const mongoose = require("mongoose");
const express = require("express");
var cors = require("cors");
const bodyParser = require("body-parser");
const logger = require("morgan");
const API_PORT = 27017;
const app = express();
app.use(cors());
const router = express.Router();
const dbRoute = "mongodb://127.0.0.1:27017/nycsandy";
mongoose.connect(
dbRoute,
{ useNewUrlParser: true }
);
let db = mongoose.connection;
let dbdata;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function () {
db.db.collection("socialmedia", function(err, collection){
collection.find({}).toArray(function(err, data){
console.log("data length from coll ", data.length); // it will print the collection data just fine
dbdata = data
})
});
});
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(logger("dev"));
// I need to get this to just return data
router.get("/getData", (req, res) => {
return dbdata
// I don't know what to put here to get my response?
});
.....
Передний конец App.js
выглядит так:
// /client/App.js
import React, { Component } from "react";
import axios from "axios";
class App extends Component {
// initialize our state
state = {
data: [],
id: 0,
message: null,
intervalIsSet: false,
idToDelete: null,
idToUpdate: null,
objectToUpdate: null
};
componentDidMount() {
this.getDataFromDb();
if (!this.state.intervalIsSet) {
let interval = setInterval(this.getDataFromDb, 10000);
this.setState({ intervalIsSet: interval });
}
}
componentWillUnmount() {
if (this.state.intervalIsSet) {
clearInterval(this.state.intervalIsSet);
this.setState({ intervalIsSet: null });
}
}
getDataFromDb = () => {
fetch("http://localhost:27017/api/getData")
.then(data => data.text())
.then(text => console.log(text))
// just testing it for now.
};
......
Это приводит к пустой ошибке ответа. ERR_EMPTY_RESPONSE
Я немного растерялся от того, как я получаю свои данные, которые правильно записываются на консоль, в маршрут getData.
Спасибо.