如何知道mongoDb中的所有方法都有一个内置的承诺。例如:“updateOne(),findOne()x1c 0d1x”这些方法都有内置的承诺,我们可以使用.”then“访问响应,但对于许多其他mongoDB方法来说,它们都缺少此特性,我们如何才能确定哪些方法没有内置的承诺?
例如:“find()”没有内置的承诺,所以我们不能执行“find().then((response)=〉{})”,这将给予一个错误。而“findOne().then((response)=〉{})”将正常工作,没有任何问题。
3条答案
按热度按时间jv4diomz1#
这在整个NodeJS MongoDB驱动程序中是不一致的,因为一些方法返回更复杂的对象来操作返回值。例如,
.find()
返回一个FindCursor
对象,该对象可用于通过重复调用.next()
来迭代结果。我建议经常参考NodeJS驱动程序的MongoDB文档(找到here,或者常见的用法示例是here)。文档相当广泛,应该有助于解决此类问题。
您还可以考虑使用TypeScript,我个人发现它对此类情况很有帮助,因为您可以很容易地判断函数/方法调用返回的对象类型。
m1m5dgzv2#
我建议经常参考NodeJS驱动程序的MongoDB文档(在这里可以找到,或者在这里可以找到常见的用法示例)。
tjvv9vkg3#
在节点Js中的MongoDB本地驱动程序中的find方法存在一些不一致。这是因为find方法返回一个游标的原因。因此,我们在这里可以做的是使用
toArray()
方法将其转换为数组。这里最好的解决方案是使用
async await
而不是承诺链,这将为我们提供一个更干净、更容易使用的语法。例如:假设我们想找到产品集合中的所有产品,下面是一个函数。
通过调用上述函数,我们将获得产品集合中的所有产品。通过查看代码,我们可以看到它提供了比到处链接承诺更可读的语法。