Задать вопрос
Grapeoff
@Grapeoff
В чём концепция...?

Моё NodeJS приложение очень странно себя ведёт, кто-нибудь сталкивался с таким?

Доброго времени суток, решил попрактиковаться в NodeJS и захотел написать чат. Создал страницу регистрации, с загрузкой данных в MongoDB Atlas. Кстати, вот оно. Само приложение на Heroku.

На локальной машине всё ОК, в бд всё отправляется, никаких ошибок и ворнингов, когда я задеплоил на Heroku, то всё тоже ок было, с компьютера смог зарегаться. Потом открыл сайт на телефоне (хотя, может это просто совпадение, которое длится на протяжении 2-х дней), зарегался и мне выдаёт 503HTTP Error и вот-такие вот логи, я их прочитал, но там абсолютно ничего полезного: 5f14a20f02fa2558490531.jpeg

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

Вот код заноса значений в бд:
const MongoDB = new MongoClient("mongodb+srv://admin:тут-пароль@sunshine.k3eim.mongodb.net/sunshine-database?retryWrites=true&w=majority", {useNewUrlParser: true, useUnifiedTopology: true}) // пароль от бд специально убрал, не ошибка

app.post("/register_me", (req, res) => {
    const data = [req.body.name, req.body.login, req.body.password]

    MongoDB.connect((err) => {
        const collection = MongoDB.db("sunshine-database").collection("users")

        collection.insertOne({name: data[0], login: data[1], password: data[2]})
        .then(() => {
            res.render('success', {
                name: data[0]
            })

            MongoDB.close()
        })
        .catch((reason) => {
            throw reason
        })
    })
})


Подключение к моему MongoDB Atlas кластеру доступно с любого IP.

PS: Приложение выдерживает только один запрос в DB и падает
  • Вопрос задан
  • 57 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
Grapeoff
@Grapeoff Автор вопроса
В чём концепция...?
Поправил, я создал переменную-флаг, которая отвечала на вопрос "А произошло ли подключение к серверу?" true : false

После чего, перенёс коннект в метод, который стартует сразу после запуска сервера (server.listen())

А в методе, отвечающем за деплой в бд я проверял, равна ли переменная успеха true, иначе рендерил сообщение об ошибке.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы