node.js - 无法在express框架中使用.then

标签 node.js express

我是 Express 框架和学习的新手,在使用 .then 时遇到问题。问题是我有两个函数,我希望第一个函数在第二个函数开始执行之前完成。我正在导出模块。

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

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

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

userId.then(ubm.showUserId(userId));

下面是两个函数:

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

当我运行时,它显示TypeError:无法读取未定义的属性“then”

就像我说的,我是个新手,正在学习,无法找出解决方案。我做了一些谷歌搜索并得到了关于promise的简介,但我不知道如何在这里实现。

最佳答案

尝试使用 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);
});

需要注意的一些事情是,在这种情况下,您可以只记录数据,而不需要像这样的其他功能

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

无论您传递给resolve()的任何值都将被返回,以及您将错误传递给reject()。

关于node.js - 无法在express框架中使用.then,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41907405/

相关文章:

node.js - res.redirect 在同一路由上创建另一个请求

mongodb - 将ElasticSearch与MongoDB数据库集成

node.js - Mocha Chai 测试 protected 路线

javascript - 如何在node-js中读取和处理大型zip文件

sql - Sequelize - 根据另一个表中的计数从一个表中返回行

node.js - bramqp 和 node.js : Error on cancelling consumer (basic. 取消)

node.js - 如何在 mongodb 和 NodeJS 查询中使用 limit

javascript - 插入行时解析错误

javascript - Grunt 在编辑 js 文件后应用更改

mysql - 持久的基于时间的队列