NodeJS + MongoDB 建立长链接及后续请求方法 网上 - Assbbs

NodeJS + MongoDB 建立长链接及后续请求方法 网上基本没有相关教程,要么就是错的。国外的讲解也不是很全面,我自己搞了一个给大家参考。   // 首先建立数据库连接,这里的MongoClient.connect 返回的是一个Promise对象,成功则把链接返回给Db对象。 const Db = MongoClient.connect D…

NodeJS + MongoDB 建立长链接及后续请求方法 网上基本没有相关教程,要么就是错的。国外的讲解也不是很全面,我自己搞了一个给大家参考。   // 首先建立数据库连接,这里的MongoClient.connect 返回的是一个Promise对象,成功则把链接返回给Db对象。 const Db = MongoClient.connect DBLINK .then Db => { return Db.db DBNAME ; } ;   // 在建立连接之后可以在这里获取一些配置,给变量初始化,只在应用启动时读取一次。 Db.then Db => Db.collection 'a' .find { id: ObjectId '621ddd7446f6073fc0cfa58a' } .toArray function err, out {    if err throw err;    console.log out ; }   // 此处是用户每次请求时建立连接的过程,相当于一个async监听器,监听到请求后执行里面的东西。 Http.createServer async request, response => {   // 因为上面的Db是Promise对象,因此这里要await等该连接调取后再执行,注意这里是从内存调取,不是重连。 let dbc = await Db;   // 执行数据库查询,返回结果数组。 let out = await dbc.collection 'w' .find { id: ObjectId '621ddd7446f6073fc0cfa58a' } .toArray ; console.log out ;   // 也可以把上面过程放入try...catch...finally,以捕获错误进行处置。 }   至于上面为何有的是.then而有的是await,其实这俩是一个东西,都是Promise对象的用法。只是NodeJS全局流程不是async,因此无法使用await而只能用.then。   Promise.then done=>{},fail=>{} 可以在任何地方使用。 成功后调用done后大括号内代码,传入参数是done。 失败后调用fail后大括号内代码,传入参数是fail。   await Promise 必须包裹在async function之中。 可以用try{}catch fail {}finally{}捕获异常。 语法更接近Java,相对好用,是前者变体。