gpt4 book ai didi

javascript - Node.js 回调混淆 - MongoDB 的 findOne() : Why is this permitted? 的第三个参数

转载 作者:行者123 更新时间:2023-11-30 21:05:13 24 4
gpt4 key购买 nike

我对 JavaScript 回调感到困惑。我不明白他们的逻辑以及他们为什么工作。下面的代码是正确的,但是怎么可能呢?

app.get('db').collection("foo").findOne({
bar: req.query.baz
}, {
_id: 0
}, (err, doc) => {
if (err) {
res.json({
status: 503,
message: "DB fault"
});
return;
}
res.json({
status: 200,
qux: doc
});
});

这是 MongoDB 的 findOne() 的定义:

db.collection.findOne(query, projection)

但在上面的代码中,传递了两个以上的参数,所以我预计会出现错误。

最佳答案

额外的参数永远不会在 JavaScript 中抛出错误。同样在像 C 这样的语言中,它们最多只会产生编译时错误。这是完全自然的行为,您使用了错误的文档。正确的是,here

findOne(query, options, callback) -> {Promise}

由于 API 支持 Promises,您实际上可以通过链接然后使用现代 JavaScript async/await 来省略回调

const value = await findOne(query, options) 

该 API 有很多差异。例如。您还可以像在 Python 中那样异步调用 Cursor 的迭代器。然而,记录在案的方式是最古老的,也可能是最快的做事方式。

关于javascript - Node.js 回调混淆 - MongoDB 的 findOne() : Why is this permitted? 的第三个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46719783/

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