Не удается получить доступ к базе данных MongoDB с помощью библиотеки Node Monk, код отлично работает на Localhost. Действительно короткий, лаконичный код - PullRequest
0 голосов
/ 28 апреля 2020

Так что я уже некоторое время имею дело с этой проблемой, и она действительно устойчива, учитывая небольшие строчки кода. Я просмотрел документацию несколько раз и перепробовал много разных композиций и опций, но это просто не сработало. Когда на локальном хосте все работает нормально, при развертывании в Интернете приложение работает, и я могу успешно получить доступ к направлению ./, в котором отображается «Camisite ???», но при попытке получить доступ к сообщениям / сообщениям время ожидания истекло. Это все, что я знаю, если кто-то может дать какой-то совет относительно того, как получить больше информации об ошибке, которая будет приветствоваться. Просто для тестирования я поместил строку подключения непосредственно в код, в противном случае это секрет Now.

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

Я уже пытался удалить часть || 'localhost/posts' в строке подключения и оставил только строку или строку в секрете.

const express = require('express');
const cors = require('cors');
const monk = require('monk');
const Filter = require('bad-words');
const rateLimit = require('express-rate-limit');

const filter = new Filter();
const app = express();
const db = monk('mongodb+srv://myuserexample:mypassexample@cluster0-qm9z0.mongodb.net/test?retryWrites=true&w=majority' || 'localhost/posts');
const posts = db.get('posts');
app.enable('trust proxy');
app.use(cors());
app.use(express.json());

app.get('/', (req, res) => {
    res.json({
        message: 'Camisite! ???'
    });
});

app.get('/posts', (req, res) => {
    posts
        .find()
        .then(posts => {
            res.json(posts);
        });
});

const port = process.env.PORT || 3000;
app.listen(port, () => {
    console.log('server started');
});

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Во-первых, вам нужно добавить .catch везде, где у вас есть .then, потому что изящная обработка ошибок помогает вам справиться с подобной ситуацией. Распечатайте свои ошибки на консоли с помощью console.error() и создайте файл журнала, по крайней мере, запустив ваше приложение следующим образом:

node app.js >> stdout.log 2>>stderr.log

Это даст вам дополнительную информацию о том, что произошло

0 голосов
/ 30 апреля 2020

Хорошо, я решил, у меня была неправильная строка, так как она была для Node версии 3.0 или выше. И у меня был 2.12, даже будучи очень недавней установкой. С правильной строкой все работало нормально.

...