gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 11:04:21 24 4
gpt4 key购买 nike

我正在使用 MongoDB 的 Node.JS 驱动程序,我想执行一个同步查询,如下所示:

function getAThing()
{
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)
{
return thing;
});
});
}
});
});
}

问题是,db.open 是一个异步调用(它不会阻塞),所以 getAThing 返回“未定义”,我希望它返回查询结果。我确信我可以使用某种阻塞机制,但我想知道执行此类操作的正确方法。

最佳答案

ES 6( Node 8+)

您可以使用async/await

await 操作符暂停异步函数的执行,直到 Promise 被解析并返回值。

这样您的代码将以同步方式工作:

const query = MySchema.findOne({ name: /tester/gi });
const userData = await query.exec();
console.log(userData)



旧解决方案 - 2013 年 6 月 ;)

现在 Mongo Sync可用,这是在 Node.js 中进行同步 MongoDB 查询的正确方法。

我也在用这个。您可以编写如下同步方法:

var Server = require("mongo-sync").Server;
var server = new Server('127.0.0.1');
var result = server.db("testdb").getCollection("testCollection").find().toArray();
console.log(result);

注意:它依赖于 node-fiber在 Windows 8 上存在一些问题。

编码愉快:)

关于javascript - 在 Node.js 中进行同步 MongoDB 查询的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12030248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com