无法在expression式框架中使用

我是新来Express框架和学习,我有一个问题,使用。 问题是我有2个function,我希望第一个完成之前,第二个开始执行。 我正在导出模块。

 var ubm = require('./userBasic'); 

有两个函数setUserDatashowUserIdshowUserId必须在setUserData执行完成后才能执行。

 var userId = ubm.setUserData(userName,userEmail,userDOB,moment); userId.then(ubm.showUserId(userId)); 

以下是2个function:

  module.exports = { setUserData: function (userName,userEmail,userDOB,moment){ //Performing database activities return userId; } showUserId: function (userId){ console.log(userId); } } 

当我运行它说TypeError: Cannot read property 'then' of undefined

就像我说的,我很新,学习和无法找出解决scheme。 我做了一些谷歌search,并得到了一个简要的promise ,但我不知道如何在这里实现。

尝试使用承诺

 module.exports = { setUserData: function(userName, userEmail, userDOB, moment) { return new Promise(function(resolve, reject) { //db stuff reject(error); resolve(userId); }); }, showUserId: function(userId) { console.log(userId); }; }; 

所以在你的执行中你会写

 ubm.setUserData(username, usereEmail, userDOB, moment) .then((data) => { showUserId(data); }) .catch((err) => { console.log(err); }); 

有几件事要注意的是,在这种情况下,你可以logging数据,而不需要另一个function

 ubm.setUserData(username, usereEmail, userDOB, moment) .then((data) => { console.log(data); }) .catch((err) => { console.log(err); }); 

无论你传递给resolve()的值是什么,都会返回,并且你将错误传递给reject()。