Экспресс (продолжение) асинхронная функция экспорта - PullRequest
0 голосов
/ 27 октября 2018

Я очень новичок в выражении / NodeJS в целом. Я начал писать небольшое приложение, предоставляющее REST API. Все должно работать так:

  • запрос перенаправляется (rout.js)
  • в rout.js, функция в контроллере вызывается
  • , поскольку мой контроллер содержит логику приложения, оно должно возвращать данные, которые отправляются с помощью res.json (CONTROLLER_FUNCTION ()).

Мой код:

controller.js

User = require('../models/user')

module.exports.users = function users() {
    users = User.findAll().then(users => {
    return users;
});

}

routes.js

/* GET users listing. */
router.get('/', function (req, res, next) {
  res.json(userController.users())
});

Так, когда мой маршрут вызывается, ничего не происходит. Я считаю, что это происходит потому, что логика моего контроллера асинхронная. Возможно, мне нужно реализовать что-то вроде функции оболочки / обратного вызова (?)

Итак, в основном мой вопрос: каков «правильный» способ справиться с такой ситуацией? Как должен выглядеть мой код?

Пример: Обычно я передаю userController.users функцию, которая вызывается при выполнении асинхронного действия (.then).

routes.js

/* GET users listing. */
router.get('/', function (req, res, next) {
  userController.users((data) => res.json(data));
});

controller.js

User = require('../models/user')

module.exports.users = function users(send) {
    users = User.findAll().then(users => {
        send(users);
    });
}

Это лучший способ сделать это? / Это считается хорошей практикой? Рекомендуется ли даже не помещать мой код непосредственно в rout.js?

1 Ответ

0 голосов
/ 27 октября 2018
module.exports.getUsers = async () => {
   const users = await User.findAll();

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