【问题标题】:React - 'reject' is not defined [closed]React - '拒绝'未定义[关闭]
【发布时间】:2018-10-04 01:18:46
【问题描述】:

我一直在使用 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);
        });
      })
    })  
  }

【问题讨论】:

  • 我看到该问题已被标记为离题。我应该删除它吗?

标签: javascript reactjs promise async-await


【解决方案1】:

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

详细了解 Promise here

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);
      });
    })
  })  
}

【讨论】:

    【解决方案2】:

    您必须将拒绝处理程序指定为您的承诺函数的参数,如下所示:

    return new Promise((resolve, reject)=> { 
           // do stuff
    })
    

    【讨论】:

      猜你喜欢
      • 2015-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 2022-01-14
      • 2022-01-03
      • 2023-04-06
      • 1970-01-01
      相关资源
      最近更新 更多