React-未定义“拒绝”

时间:2018-10-03 17:11:31

标签: javascript reactjs promise async-await

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

2 个答案:

答案 0 :(得分:2)

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

详细了解承诺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);
      });
    })
  })  
}

答案 1 :(得分:2)

您必须像这样将promise函数的参数指定为拒绝处理程序:

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