NodeJS+Sequelize调用service层create方法返回undefined如何解决
问题根源
- 你的
createUserasync函数没有显式向外层返回值,默认返回undefined。你写在.then()/.catch()回调里的return语句,只会把值返回给回调本身,不会传递到外层createUser函数的返回结果中。 - 混用
await和Promise链式调用的写法,也容易混淆返回值的作用域,增加排查成本。
修复方案
方案1:保留Promise链式调用写法
直接返回整个User.create的Promise链式调用结果即可,无需额外加await:
module.exports.createUser = async (userData) => { let user = { first_name: userData.first_name, last_name: userData.last_name, email: userData.email, password: userData.password }; // 直接返回整个Promise链,外层await可以拿到回调返回的结果 return User.create(user).then(result => { console.log('success'); return result; }).catch(error => { console.log('error'); return 'test'; }) }
方案2:统一用async/await写法(更推荐,可读性更高)
用try/catch替代.then/.catch,逻辑更清晰,避免作用域混淆:
module.exports.createUser = async (userData) => { let user = { first_name: userData.first_name, last_name: userData.last_name, email: userData.email, password: userData.password }; try { const result = await User.create(user) console.log('success') return result } catch (error) { console.log('error') return 'test' } }
内容的提问来源于stack exchange,提问作者Sameera
相关产品推荐
相关产品推荐

