首页 > 解决方案 > 反应 - '拒绝'未定义

问题描述

我一直在使用 Node.js 使用异步等待从我的 MongoDB 服务器中提取一些数据。代码一直在Node环境下运行,我一直在输出查询结果到控制台。我现在正在将代码迁移到 React 以进行一些可视化。但是当我移动节点时,我得到错误“拒绝”未定义。我可能犯了一个基本错误,也许我需要导入一个模块?

  async componentWillMount(){
    var result = await this.getMongoData("mydb", url);
  }

  getMongoData(dboArg, urlArg) {
    return new Promise(resolve => {
      MongoClient.connect(urlArg, { useNewUrlParser: true }, function(err, db) {
        if (err) throw err;
        var dbo = db.db(dboArg);
        dbo.collection(myCollection).find({}).toArray(function(err, data) {
          db.close();
          err 
              ? reject(err) 
              : resolve(data);
        });
      })
    })  
  }

标签: javascriptreactjspromiseasync-await

解决方案


您需要将拒绝作为您的承诺中的参数。

在此处了解有关承诺的更多信息

async componentWillMount(){
  var result = await this.getMongoData("mydb", url);
}

getMongoData(dboArg, urlArg) {
  return new Promise((resolve, reject) => {
    MongoClient.connect(urlArg, { useNewUrlParser: true }, function(err, db) {
      if (err) throw err;
      var dbo = db.db(dboArg);
      dbo.collection(myCollection).find({}).toArray(function(err, data) {
        db.close();
        err 
            ? reject(err) 
            : resolve(data);
      });
    })
  })  
}

推荐阅读