栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Node.js中进行同步MongoDB查询的正确方法是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Node.js中进行同步MongoDB查询的正确方法是什么?

没有办法使这种同步变得不可怕。正确的方法是

getAThing
接受回调函数作为参数,然后
thing
在可用时调用该函数。

function getAThing(callback){    var db = new mongo.Db("mydatabase", server, {});    db.open(function(err, db)    {        db.authenticate("myuser", "mypassword", function(err, success)        { if (success) {     db.collection("Things", function(err, collection)     {         collection.findOne({ name : "bob"}, function(err, thing)         {         db.close();callback(err, thing);         });     }); }        });    });}

节点7.6+更新

async
/
await
现在提供了一种使用返回承诺的异步API(例如本机MongoDB驱动程序那样)时的同步
样式 编码方式。

使用这种方法,上面的方法可以写成:

async function getAThing() {    let db = await mongodb.MongoClient.connect('mongodb://server/mydatabase');    if (await db.authenticate("myuser", "mypassword")) {        let thing = await db.collection("Things").findOne({ name: "bob" });        await db.close();        return thing;    }}

然后您可以从另一个

async
函数调用
let thing = await getAThing();

但是,值得注意的是,它

MongoClient
提供了一个连接池,因此您不应该在此方法中打开和关闭它。相反,请
MongoClient.connect
在应用启动期间调用,然后将方法简化为:

async function getAThing() {    return db.collection("Things").findOne({ name: "bob" });}

请注意,我们不在

await
方法中调用,而是直接返回由返回的promise
findOne



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448430.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号