Я очень новичок в выражении / 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?