无法将值从服务返回到控制器以在node.js中进行呈现

我最近开始使用nodejs,因为我想转到一个新的项目(我通常是一个Java程序员)。

我正在做一个rest服务API。 到目前为止,我已经有一个路由模块,它定义了我的端点,然后调用一个控制器函数,它保留了我的对象,然后返回响应。

我想委托我的持久性逻辑到一个服务模块,以保持我的控制器。 对于我更复杂的情况来说,这是绝对必要的。

我正在努力寻找如何成功地重构我的代码来使用服务。 我到目前为止还没有成功地调用一个服务方法,从我的控制器返回一个值,然后渲染。

我将提供我正在工作的原始模块,然后尝试将逻辑拉出到返回值的服务模块中:

路线/ index.js

const UserController = require('../controllers/userController'); const ProfileController = require('../controllers/profileController'); module.exports = (app) => { app.get('/api', (req, res) => res.status(200).send({ message: 'Welcome to the Todos API!', })); app.get('/api/users', UserController.list); app.post('/api/users', UserController.create); app.get('/api/users/1/profile', function() { console.log('got profile for user 1'); }); app.post('/api/users/1/profile', ProfileController.create); }; 

车型/ user.js的

 'use strict'; module.exports = (sequelize, DataTypes) => { var User = sequelize.define('User', { username: DataTypes.STRING, password: DataTypes.STRING, email: DataTypes.STRING, }, { classMethods: { associate: function(models) { // associations can be defined here } } }); return User; }; 

原始(工作)控制器/ userController.js

 const User = require('../models').User; module.exports = { create(req, res) { return User .create({ username: req.body.username, password: req.body.password, email: req.body.email, }) .then(user => res.status(201).send(user)) .catch(error => res.status(400).send(error)); }, list(req, res) { return User .all() .then(users => res.status(200).send(users)) .catch(error => res.status(400).send("couldnt get list: " + error)); }, }; 

现在我试图重构并把持久代码放到一个服务中:

修改的控制器/ userController.js

 const UserService = require('../services/userService'); module.exports = { create(req, res) { return Promise.resolve(UserService.create) .then(user => res.status(201).send(user)) .catch(error => res.status(400).send(error)); }, list(req, res) { return User .all() .then(users => res.status(200).send(users)) .catch(error => res.status(400).send("couldnt get list: " + error)); }, }; 

新的服务/ userService.js

 const User = require('../models').User; module.exports = { create(req, res) { return User .create({ username: req.body.username, password: req.body.password, email: req.body.email, }) }, list(req, res) { return User .all() }, }; 

我相当确定,我的问题是我对callback和承诺如何工作缺乏认识。

任何帮助和/或build议将非常受欢迎。 我正在努力为自己的工作重新find一个良好的开端。

提前致谢!