Почему не работает простой запрос чтения MongoDB? - PullRequest
0 голосов
/ 08 ноября 2019

Я делаю приложение на сервере, используя Express и Mongodb. Раньше я делал отличную разработку этого приложения, пока с одним небольшим изменением ни один из моих запросов не работал на mongodb. Я трижды проверил мою строку подключения, и вывод на почтальон получает эту функцию, но никогда не вызывал обратный вызов запроса mongodb.

Вот мой server.js

require("dotenv").config();
const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");
const authenticationController = require("./controllers/authenticationController");
const mainActionsController = require("./controllers/mainActionsController");

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

// all user actions
app.use("/auth", authenticationController);

app.use("/memoryleak", mainActionsController);

// Fail safe. Here's our classic 404 error :P
app.all("*", (req, res) => {
  res
    .status(404)
    .send(
      "Sorry, the content you were looking for was not found. The classic 404 "
    );
});

const port = process.env.PORT || 3001;
app.listen(port, function() {
  console.log("Express server listening on port " + port);
});

module.exports = { app };

ВотФрагмент моего mainActionsController, который запускается выше и использует маршрутизатор ...

const router = express.Router();
const mongoose = require("mongoose");
const { Questions, Replies, Users } = require("../dbschema");
const repliesController = require("./repliesController");
const questionController = require("./questionController");
const notificationController = require("./notificationsController");

router.get("/getQuestionById/:id", (req, res) => {
  questionController.getQuestionById(req, res, Questions, mongoose);
});
router.get("/questions", (req, res) => {
  questionController.getAllQuestions(req, res, Questions);
});

module.exports = router;

Вот моя функция getAllQuestions:

const getAllQuestions = (req, res, Questions) => {
  console.log("got to the correct function");
  Questions.find({}, (err, docs) => {
    console.log("hello? CAN YOU HEAR ME");
    console.log(err, docs);
    if (err) {
      console.log(err);
      return res.status(400).send(err);
    }
    console.log(docs);
    return res.status(200).send(docs);
  });
};

Все эти журналы консоли достигаются при достижении маршрутапочтальон, но внутри функции обратного вызова ничего не регистрируется, и соединение просто приостанавливается.

И наконец, вот моя схема БД

const mongoose = require("mongoose");
const UserSchema = new mongoose.Schema({
  userName: { type: String, unique: true, required: true },
  passWord: { type: String, required: true },
  questionsAsked: { type: Array, required: true },
  repliesGiven: { type: Array, required: true },
  itemsLiked: { type: Array, required: true },
  notifications: { type: Array, required: true }
});
const QuestionSchema = new mongoose.Schema({
  title: { type: String, required: true },
  questionBody: { type: String, required: true },
  numReplies: { type: Number, required: true },
  numLikes: { type: Number, required: true },
  numVotes: { type: Number, required: true },
  tags: { type: Array, required: true },
  contributor: { type: String, required: true }
});
const ObjectId = mongoose.Schema.Types.ObjectId;
const ReplySchema = new mongoose.Schema({
  questionID: ObjectId,
  title: String,
  questionBody: String,
  numLikes: Number,
  numVotes: Number,
  contributor: String
});

mongoose.model("Reply", ReplySchema);
mongoose.model("Question", QuestionSchema);
mongoose.model("User", UserSchema);

module.exports = {
  Questions: mongoose.model("Question"),
  Replies: mongoose.model("Reply"),
  Users: mongoose.model("User")
};[1]

Любая обратная связь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...