MongoDB отправка запроса через API длилась слишком долго - PullRequest
0 голосов
/ 27 января 2020

Я столкнулся с проблемой при разработке REST api whit mon goose, mongoAtlas и Express. js Проблема заключается в слишком длинном запросе (никогда не заканчивается), я пробовал некоторые решения из net но каждый раз у меня возникает одна и та же проблема.
Я могу подключиться к атласу без ошибок. Но запросы никогда не заканчиваются sh, это работа. Это каждый запрос (GET, POST, PUT / PATCH, DELETE).

Моя схема:

const mongoose = require('Mongoose');

const countrySchema = new mongoose.Schema({
    _id: {
        type: mongoose.Schema.Types.ObjectId,
        required: true
    },
    country: {
        type: String,
        required: true
    },
    alfa2: {
        type: String,
        required: true
    }
});

const Country = mongoose.model("Country", countrySchema);

module.exports = Country;

Мой индекс. js (основной файл):

const express = require('express');
const bodyParser = require('body-parser');
const app = express();

require('./db/db');

const countryService = require('./api/countryService');
const cityService = require('./api/cityService');
const deliveryService = require('./api/deliveryService');
const parcelService = require('./api/parcelService')
const recipientService = require('./api/recipientService');
const regionService = require('./api/regionService');
const userService = require('./api/userService');
const zipCodeService = require('./api/zipCodeService');


app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));


app.use('/api/cities', cityService.route);
app.use('/api/countries', countryService.route);
app.use('/api/deliveries', deliveryService.route);
app.use('/api/parcels', parcelService.route);
app.use('/api/recipients', recipientService.route);
app.use('/api/regions', regionService.route);
app.use('/api/users', userService.route);
app.use('/api/zipCodes', zipCodeService.route);

app.get('/', (req, res) => {
    res.json({
        message: 'Behold The MEVN Stack!'
    });
});

const port = process.env.PORT || 4000;
app.listen(port, () => {
    console.log(`listening on ${port}`);
});

Мой файл подключения к БД

const mongoose = require('mongoose');

const dbURI = 'mongodb+srv://admin:xxxx@s16237-xnr9c.mongodb.net/test?retryWrites=true&w=majority';

const options = {
    useNewUrlParser: true,
    useUnifiedTopology: true
};

mongoose.connect(dbURI, options).then(
    () => {
        console.log('Database connection established!');
    },
    err => {
        console.log('Error connecting Database instance due to: ', err);
    }
);

И, наконец, мой файл API:

const express = require('express');
const router = express.Router();
const Country = require('../model/country');
const mongoose = require('mongoose');

router.get('/', (req, res, next) => {
    Country.find()
        .exec()
        .then((docs) => {
            console.log(docs);
            if (docs.lenght >= 0) {
                res.status(200).json(docs);
            } else {
                res.status(404).json({ message: "no valid entry found" });
            }
        })
        .catch((err) => {
            console.log(err);
            res.status(500).json({
                error: err
            })
        });
});

router.get('/:countryId', (req, res, next) => {
    const id = req.params.countryId;
    Country.findById(id)
        .exec()
        .then((doc) => {
            console.log(doc);
            if (doc) {
                res.status(200).json(doc);
            } else {
                res.status(404).json({ message: "no valid entry found" });
            }

        })
        .catch((err) => {
            console.log(err);
            res.status(500).json({ error: err });
        });
});

router.post('/', (req, res, next) => {
    const country = new Country({
        _id: new mongoose.Types.ObjectId,
        country: req.body.country,
        alfa2: req.body.alfa2
    });
    country.save().then((result) => {
            console.log(result);
            res.status(201).json(result);
        })
        .catch((err) => {
            console.log(err);
            res.status(500).json({ error: err });
        });
});

router.patch('/:countryId', (req, res, next) => {
    const id = req.params.countryId;
    const updateOps = {};
    for (const ops of req.body) {
        updateOps[ops.propName] = ops.value;
    }
    Country.update({ _id: id }, { $set: updateOps })
        .exec()
        .then((result) => {
            console.log(result);
            res.status(200).json(result);
        })
        .catch((err) => {
            console.log(err);
            res.status(500).json({ error: err });
        });
});

router.delete('/:countryId', (req, res, next) => {
    const id = req.params.countryId;
    Country.remove({ _id: id })
        .exec()
        .then((result) => {
            console.log(result);
            res.status(200).json(result);
        })
        .catch((err) => {
            console.log(err);
            res.status(500).json({ error: err });
        });
});

module.exports.route = router;

Через несколько минут у меня появилось это сообщение Не удалось получить ответ

Я хотел бы добавить, что я новичок в MongoDb, и я не совсем уверен, что я сделал неправильно. Я попытался найти похожие посты здесь но ничего не найдено

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