无法在expression式框架中使用
我是新来Express框架和学习,我有一个问题,使用。 问题是我有2个function,我希望第一个完成之前,第二个开始执行。 我正在导出模块。
var ubm = require('./userBasic');
有两个函数setUserData
和showUserId
, showUserId
必须在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()。
- NodeJS / Express – 在路由器文件中创build可用的MySQL连接对象
- mongoose – 不能用子模型创build模型
- Authentication.js / sails.js中的authentication和会话
- MySQL数据存储的ExpressJS会话不起作用
- 在expressjs中使用next()将variables传递给下一个中间件
- Nodejs – 与vhostdynamic快速子域名
- sails中的节点js passport-facebook策略authentication
- app.render 在Node.js中使用Express与Gaikan
- http-proxy-middleware – 访问静态文件