caseconst{MongoClient}=require('mongodb')asyncfunctionmain(){consturl="mongodb://localhost:27017"constclient=newMongoClient(url);constdbName='my-react-admin'try{awaitclient.connect();console.log('访问数据库!')constdb=client.db(dbName);db.collection('users').find({}).toArray((err,data)=>{//if(err)throwerrconsole.log(data)})}catch(e){console.error(e);}最后{awaitclient.close();}}main().catch(console.error);这样写完运行后,输出为Accesstodatabase!undefined,也就是说实际上连接上了数据库,但是没有任何返回。然后加一个throwerr,看看是哪里出了问题,再运行一下。报错MongoExpiredSessionError:Cannotuseasessionthathasended。发现由于异步操作的问题导致断库前没有进行数据查询,即查询数据步骤中没有异步操作,Array中传入的回调函数无法返回Promise对象,所以没有办法添加await。删除回调函数后,增加await输出,即可解决该问题。const{MongoClient}=require('mongodb')consturl="mongodb://localhost:27017"constclient=newMongoClient(url);asyncfunctionmain(){constdbName='my-react-admin'try{等待客户端连接();console.log('连接到数据库!')constdb=client.db(dbName);constresult=awaitdb.collection('users').find({}).toArray()console.log(result)}catch(e){console.error(e);复制代码}最后{awaitclient.close();}}main().catch(console.error);
