繁体   English   中英

尝试将节点 js 与 mongoDB Atlas cloud 连接时出现 UnhandledPromiseRejectionWarning 错误

[英]I am getting UnhandledPromiseRejectionWarning error when trying to connect node js with mongoDB Atlas cloud

我创建了一个 app.js 文件,并在那里尝试连接 mongoDB 地图集。 错误“UnhandledPromiseRejectionWarning:未处理的 promise 拒绝。 此错误源于在没有 catch 块的情况下抛出异步 function 内部,或拒绝未处理的 promise 当我在终端中运行时抛出。

const connect = async function () {
  const MongoClient = require('mongodb').MongoClient;
  const uri = "mymongoDB atals url for nodejs";
  MongoClient.connect(uri, { useNewUrlParser: true });

  const collection = client.db("feedback").collection("itinerary");
  // perform actions on the collection object
  client.close();

};
connect().then(() => {
  console.log('handle success here');
}).catch((exception) => {
  console.log('handle error here: ', exception)
})

尝试将异步 function 操作放在 try catch 块中,如下所示。 我希望这应该做的工作。

const connect = async function () {
  try {
    const MongoClient = require('mongodb').MongoClient;
    const uri = "mymongoDB atals url for nodejs";
    MongoClient.connect(uri, { useNewUrlParser: true });

    const collection = client.db("feedback").collection("itinerary");
    // perform actions on the collection object
    client.close();
  } catch (e) {
    console.log("Error", e)
  }

};

connect().then(() => {
  console.log('handle success here');
}).catch((exception) => {
  console.log('handle error here: ', exception)
})

尝试这个:

const MongoClient = require('mongodb').MongoClient;

const connect = function () {
  return new Promise((resolve, reject) => {
    try {
      const uri = "mymongoDB atals url for nodejs";
      const client = new MongoClient(uri, { useNewUrlParser: true });
      client.connect(err => {
        if (err) {
          reject(err)
        }
        const collection = client.db("feedback").collection("itinerary");
        client.close();
        resolve();
      });
    } catch (e) {
      reject(e);
    }
  }) 
};
connect().then(() => {
  console.log('handle success here');
}).catch((exception) => {
  console.log('handle error here: ', exception)
})

试试这个方法:

const MongoClient = require('mongodb').MongoClient;

// replace the uri string with your connection string.
const uri = "mymongoDB atals url for nodejs"
MongoClient.connect(uri, function(err, client) {
   if(err) {
        console.log('handle error here: ');
   }
   console.log('handle success here');
   const collection = client.db("feedback").collection("itinerary");
   // perform actions on the collection object
   client.close();
});

尝试将 function 的所有内容包装在try / catch块中:

const connect = async function () {
  try {
     const MongoClient = require('mongodb').MongoClient;
     const uri = "mymongoDB atals url for nodejs";
     MongoClient.connect(uri, { useNewUrlParser: true });

     // most probably this is throwing the error. Notice the extra await
     const collection = await client.db("feedback").collection("itinerary");

     // perform actions on the collection object
     client.close();
  } catch (e) {
    console.log(`Caught error`,e)
  }

};
connect().then(() => {
  console.log('handle success here');
}).catch((exception) => {
  console.log('handle error here: ', exception)
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM