首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当尝试使用异步迭代器与Mongoose 5.11.14:必须有一个'[Symbol.asyncIterator]()‘时,类型记录错误

当尝试使用异步迭代器与Mongoose 5.11.14:必须有一个'[Symbol.asyncIterator]()‘时,类型记录错误
EN

Stack Overflow用户
提问于 2021-01-29 17:46:59
回答 1查看 613关注 0票数 1

在意识到@types/mongoose有类型信息之后,我正在尝试放弃使用mongoose 5.11

但是,在对以下代码运行tsc时,我现在遇到了类型转换问题:

代码语言:javascript
复制
for await (const document of db.myModel.find()) {
...
}

错误是:

代码语言:javascript
复制
Type 'Query<IMyDocumentType[], IMyDocumentType>' must have a '[Symbol.asyncIterator]()' method that returns an async iterator.

忽略错误并运行代码可以正常工作。我是遗漏了什么,还是mongoose 5.11.14中缺少了@types/mongoose所拥有的类型信息?

代码语言:javascript
复制
mongoose 5.11.14
node.js 12.19.0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-29 18:04:38

是的,缺少类型信息。

@types/mongoose@5.10.3 defines [Symbol.asyncIterator] on DocumentQueryQuery扩展了DocumentQuery

mongoose@5.11.14 does define [Symbol.asyncIterator] on Query

必须在for await...of语句的右侧使用的任何接口上定义此方法。

我确实注意到,这两个包都定义了扩展QueryCursorstream.Readable。这个类确实定义了一个[Symbol.asyncIterator]方法,cursor() method of the Query interface返回QueryCursor的一个实例。在不使用@types/mongoose的情况下,试着查看以下内容是否按您的预期进行编译和运行

代码语言:javascript
复制
for await (const document of db.myModel.find().cursor()) {
//                                            ^^^^^^^^^
...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65959353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档