Экспресс-маршрут отправляет ответ до завершения асинхронной операции (нет ошибок, но данные не определены)Javascript

Форум по Javascript
Ответить
Anonymous
 Экспресс-маршрут отправляет ответ до завершения асинхронной операции (нет ошибок, но данные не определены)

Сообщение Anonymous »

Я столкнулся с проблемой, когда мой API возвращает неопределенное значение, хотя запрос к базе данных выполняется успешно.
  • API отвечает неопределенным или пустым объектом
  • Ошибок не возникает
  • В журналах консоли внутри запроса к базе данных отображаются правильные данные
  • Ответ отправляется до того, как данные станут доступны

    Код: Выделить всё

    app.get("/api/user/:id", (req, res) => {
    let user;
    
    User.findById(req.params.id)
    .then((data) => {
    console.log("Fetched user:", data);
    user = data;
    })
    .catch((err) => {
    console.error(err);
    });
    
    res.json(user);
    });
    
    
    Я пробовал
    • Вход в консоль внутри .then() (данные существуют)
    • Обертывание кода в try/catch
    • Перезапуск сервера
    Почему user становится неопределенным в ответе, хотя запрос к базе данных возвращает правильные данные. Как правильно справиться с этим в Express?


Подробнее здесь: https://stackoverflow.com/questions/798 ... or-but-dat
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»