MongoDB не возвращает данные MEAN Stack App - PullRequest
0 голосов
/ 28 января 2020

ОЧЕНЬ плохо знаком со средним стеком и программированием. Я работаю над подключением базы данных mongoDB к бэкэнду Node / Express, и я не могу заставить mongoDB возвращать что-либо, кроме пустого массива.

Это моя модель сайта

const mongoose = require('mongoose');
const siteSchema = mongoose.Schema({
  siteId: { type: Number, required: true },
  utility: { type: String, required: true},
  company: { type: String, required: true},
  address: {
    street: String,
    city: String,
    state: String,
    zip: String
  },
  contact: {
    person: String,
    phone: String,
    cell: String,
    fax: String,
    email: String
  },
  siteType: String,
  siteUse: String,
  utilityStatus: String,
  hazards: [{
    hazardId: Number,
    altAddress: {
      street: String,
      city: String,
      state: String,
      zip: String
    },
    locationOnSite: String,
    notes: String,
    hazard: String,
    check: String,
    trapType: String,
    frequency: String,
    trapSize: String,
    testDue: String,
    testExtendedTo: String,
    installDue: String,
    installExtendedTo: String,
    deviceDeficiency: String,
    deviceDeficiencyExtendedTo: String,
    lastTest: String,
    lastTestBy: String,
    lastTestPass: String,
    pumpedBy: String,
    deviceStatus: String,
    lastletterType: String,
    lastLetterSent: String,
    updatedBy: String,
    updatedDate: String,
    webfee: Number,
    mailRecipients: [{
      contact: String,
      Company: String,
      address: {
        street: String,
        city: String,
        state: String,
        zip: String
      },
      phone: String,
      fax: String,
      email: String
    }]
  }]
});

module.exports = mongoose.model('Site', siteSchema);

Это мои сайты. js route

const express = require('express');

const Site = require('../models/site');

const router = express.Router();

router.get("", (req, res, next) => {
  const siteQuery = Site.find();
  console.log(siteQuery);
  let fetchedSites;
  siteQuery.then(documents => {
    fetchedSites = documents;
    return Site.count();
  })
  .then(count => {
    res.status(200).json({
      message: 'Filler',
      sites: fetchedSites,
      siteCount: count
    });
  });
});

module.exports = router;

Я успешно подключаюсь к базе данных, но это единственный вывод, который я получаю

{"message":"Filler","sites":[],"siteCount":0}

Когда я console.log (siteQuery), печатается объект mon goose Query.

Любая помощь будет принята с благодарностью

Ответы [ 2 ]

0 голосов
/ 28 января 2020

Возникла проблема со строкой подключения, которую я получил от mongoDB. Мне пришлось добавить все сегменты в моей базе данных в строку подключения после '@' и разделить их запятыми, и мне пришлось заменить 'test' в строке подключения по умолчанию на имя моей базы данных, и это сработало!

Если у вас похожая проблема с mongoDB Atlas, мне пришлось воспользоваться поддержкой чата с mon go, и они смогли найти проблему через ~ 30 минут.

0 голосов
/ 28 января 2020

Ты можешь попробовать вот так? Я преобразовал ваш код в синтаксис async / await. Также Model.count устарела, поэтому я использовал countDocuments.

router.get("/", async (req, res, next) => {
  try {
    const fetchedSites = await Site.find({});

    const count = await Site.countDocuments();

    res.status(200).json({
      message: "Filler",
      sites: fetchedSites,
      siteCount: count
    });
  } catch (err) {
    console.log(err);
    res.status(500).send("Something went wrong");
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...