从本地托管 MongoDB (Node.js) 获取快速响应的问题

Issues getting an Express resonse from locally hosted MongoDB (Node.js)

我正在尝试将数据从我本地托管的 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 路由有点迷惑。

谢谢。

在你的 router.get 中试试这个:

res.status(200).send("whatYouWantToSend")