首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对返回TypeScript中数组的mongoose查询使用`lean`

对返回TypeScript中数组的mongoose查询使用`lean`
EN

Stack Overflow用户
提问于 2017-07-21 01:43:05
回答 1查看 3K关注 0票数 3

我有两个Mongoose查询,我认为最好对它们使用.lean()

对于返回单个文档的方法,它似乎工作得很好:

代码语言:javascript
复制
let something:Something;
SomethingDocument.findOne({_id:theId}).lean().then( (res) => { something = res;});

问题是,当我尝试将其用于返回多个结果的查询时:

代码语言:javascript
复制
let somethings:Something[];
SomethingDocument.find({color:'blue'}).lean().then( (res) => { somethings = res;});

第二个调用给出了错误:

代码语言:javascript
复制
Type 'Object' is not assignable to type 'Something[]'.
  The 'Object' type is assignable to very few other types. Did you mean to use the 'any' type instead?
    Property 'length' is missing in type 'Object'.

如果我尝试进行类型转换,它只会报告'Object‘类型中缺少'length’属性。

当我希望得到一个结果数组时,如何使用lean

如果我简单地省略lean,...note就能正常工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-21 01:47:59

Mongoose类型定义不是很好,所以你可以使用下面的命令来修复它:

代码语言:javascript
复制
let somethings:Something[];
SomethingDocument.find({color:'blue'}).lean().then((res) => { somethings = res as any;});

顺便说一句,如果你能做到这一点,我建议你使用await (你必须将TS编译成现代的Ecma版本):

代码语言:javascript
复制
const somethings = await SomethingDocument.find({color:'blue'}).lean() as Something[];

请注意,前一个版本捕获了.catch上的错误,但第二个版本将抛出异常。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45221722

复制
相关文章

相似问题

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