node.js - 如何在 node.js 中使用 Promise 和 express?

标签 node.js express mongoose promise synchronous

我正在使用 Promise 和 Express。

router.post('/Registration', function(req, res) {
  var Promise = require('promise');
  var errorsArr = [];
  function username() {
    console.log("1");
    return new Promise(function(resolve, reject) {
      User.findOne({ username: req.body.username }, function(err, user) {
        if(err) {
          reject(err)
        } else {
          console.log("2");
          errorsArr.push({ msg: "Username already been taken." });
          resolve(errorsArr);
        }
      });
    });
  }
  var username = username();
  console.log(errorsArr);
});

当我记录 errorsArray 时,它是空的,我不知道为什么。我是 node.js 的新手。提前致谢。

最佳答案

尝试以下,之后请阅读以下文档https://www.promisejs.org/了解 Promise 的工作原理。

var Promise = require('promise');
router.post('/Registration',function(req,res,next) {
    function username() {
        console.log("agyaaa");
        return new Promise(function(resolve,reject) {
            User.findOne({"username":req.body.username}, function(err,user) {
                if (err) {
                    reject(err)
                } else {
                    console.log("yaha b agyaaa");
                    var errorsArr = [];
                    errorsArr.push({"msg":"Username already been taken."});
                    resolve(errorsArr);
                }

            });
        });
    }
    username().then(function(data) {
        console.log(data);
        next();
    });
});

您也可能遇到其他错误(或不应该这样做的事情)。我只是向您展示 Promise 的基本用法。

关于node.js - 如何在 node.js 中使用 Promise 和 express?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35034506/

相关文章:

javascript - 在同一文件中使用 module.export 函数 实现该函数的同一文件

javascript - 在 node.js 应用程序中读取文件时出现奇怪的 unicode 字符

javascript - 使用 elemMatch 从数组 Node.js 返回一个对象

javascript - 使用 MomentJS 的 Javascript 中的无效日期

node.js - 通用错误处理程序 MEANJS、mongoose、winston

node.js - Mongoose 按半径查找地理点

node.js - npm update 取消链接链接包

node.js - 如何将 Express REST 层放置在 Apollo GraphQL 服务器之上?

javascript - mongoose.connect(),第一个参数应该是字符串,收到未定义

javascript - mongodb - 汇总和展开外国引用文件