小编Hen*_*ges的帖子

Mongo TypeError:MongoClient.close 不是函数

我正在构建一个应用程序,该应用程序在闲置一段时间后关闭其数据库连接。问题是,我无法终止它与 MongoClient.close() 的连接,因为它总是返回错误“TypeError:MongoClient.close 不是函数”。我究竟做错了什么?

const MongoClient = require("mongodb").MongoClient;
let mongo = {};
let db;
let disconnectTimer;
let retryTimer;
let disconnect; //Used to prevent mongo from reconnect.

mongo.disconnect = () => {
    disconnect = true;
    try {
        MongoClient.close();
    } catch (error) {
        console.warn("Error closing connection to Database =", error);
        throw {
            statusCode: 404,
            error: error.toString(),
            reason: "",
            details: ""
        };
    }
}
mongo.getDB = () => {
    if (typeof db !== "undefined" && !disconnect)
        return db;
    else
        return connect().catch((error) => { …
Run Code Online (Sandbox Code Playgroud)

mongodb node.js express

3
推荐指数
1
解决办法
3034
查看次数

Node.JS - 无法使用 try/catch 块获取异步抛出

当我在 node 中创建一个异步函数并使用await 时,我让执行等待承诺解决(可以是解决或拒绝),我所做的是将await承诺放在 try/catch 块中并抛出承诺拒绝时的错误。问题是,当我在 try/catch 块中调用这个异步函数来捕获错误时,我得到一个UnhandledPromiseRejectionWarning。但是使用await的全部意义不是等待承诺解决并返回它的结果?似乎我的异步函数正在返回一个承诺。

示例 - UnhandledPromiseRejectionWarning代码:

let test = async () => {
   let promise = new Promise((resolve, reject) => {
      if(true) reject("reject!");
      else resolve("resolve!");
   });
   try{
      let result = await promise;
   }
   catch(error) {
      console.log("promise error =", error);
      throw error;
   }
}

let main = () => {
   try {
      test();
   }
   catch(error){
      console.log("error in main() =", error);
   }
}

console.log("Starting test");
main();
Run Code Online (Sandbox Code Playgroud)

javascript node.js async-await

1
推荐指数
1
解决办法
3479
查看次数

标签 统计

node.js ×2

async-await ×1

express ×1

javascript ×1

mongodb ×1