Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在mongonodejs中使用wait调用构造函数和使用new调用构造函数有什么区别?_Node.js_Mongodb_Driver - Fatal编程技术网

Node.js 在mongonodejs中使用wait调用构造函数和使用new调用构造函数有什么区别?

Node.js 在mongonodejs中使用wait调用构造函数和使用new调用构造函数有什么区别?,node.js,mongodb,driver,Node.js,Mongodb,Driver,这两者有什么区别 从“mongodb”导入{MongoClient} 异步函数run(){ 试一试{ const client=wait MongoClient('mongodb://localhost:27017/testing“,{useNewUrlParser:true,useUnifiedTopology:true}).connect() //其他代码 }最后{ 等待客户端关闭() } } run().catch(错误=>{console.error(错误)}) 这是: 从“mongo

这两者有什么区别

从“mongodb”导入{MongoClient}
异步函数run(){
试一试{
const client=wait MongoClient('mongodb://localhost:27017/testing“,{useNewUrlParser:true,useUnifiedTopology:true}).connect()
//其他代码
}最后{
等待客户端关闭()
}
}
run().catch(错误=>{console.error(错误)})
这是:

从“mongodb”导入{MongoClient}
异步函数run(){
const client=new MongoClient('mongodb://localhost:27017/testing“,{useNewUrlParser:true,useUnifiedTopology:true})
试一试{
等待client.connect()
//其他代码
}最后{
等待客户端关闭()
}
}
run().catch(错误=>{console.error(错误)})

文档摘要显示,第二种方法是创建客户机,但我经常发现第一种方法要使用

第一种方法将客户机的构造置于try块之下。这有两个作用:

  • 构造函数引发的任何异常都将由catch块处理
  • 客户端对象的作用域为try块,在catch块中不可用
  • 最明显的结果是catch块中的清理将永远无法工作,因为那里没有定义客户机:

    risque% node test.js
    ReferenceError: client is not defined
        at run (/home/w/apps/tests/node-try-ctor/test.js:10:5)
        at processTicksAndRejections (node:internal/process/task_queues:93:5)
    

    您可以通过连接到不正确的端口来测试这一点。

    您在
    上使用
    wait
    。connect()
    在这两种情况下都使用,而不是在构造函数上。