Express(序列化)导出异步功能

时间:2018-10-27 08:37:38

标签: javascript function express asynchronous sequelize.js

我对表达NodeJS非常陌生。我开始写一个小应用程序,提供一个REST API。整个过程应该像这样:

  • 请求被路由(routes.js)
  • 在route.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);
    });
}

这是最好的方法吗? /这被认为是好的做法吗?甚至建议不要将我的代码直接放入route.js?

1 个答案:

答案 0 :(得分:0)

module.exports.getUsers = async () => {
   const users = await User.findAll();

   return users; 
}