在使用TypeScript返回数组的mongoose查询上使用`lean`

时间:2017-07-20 17:43:05

标签: node.js mongodb typescript mongoose

我有两个Mongoose查询,并决定最好使用.lean()

对于返回单个文档的那个,它似乎工作正常:

let something:Something;
SomethingDocument.findOne({_id:theId}).lean().then( (res) => { something = res;});

问题是当我尝试将它与返回多个结果的查询一起使用时:

let somethings:Something[];
SomethingDocument.find({color:'blue'}).lean().then( (res) => { somethings = res;});

第二个调用给出了错误:

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'.

如果我尝试进行类型转换,只会抱怨长度为'属性'对象'

中缺少属性

当我期待一系列结果时,如何使用lean

...请注意,如果我只是省略lean,那么一切正常。

1 个答案:

答案 0 :(得分:3)

Mongoose类型定义不太好恕我直言,所以你可以使用它来解决它:

AWSCLI

顺便说一下,如果你能够(你必须将TS编译成现代的Ecma版本),我建议使用let somethings:Something[]; SomethingDocument.find({color:'blue'}).lean().then((res) => { somethings = res as any;});

await

请注意,前一个版本会捕获.catch上的错误,但第二个版本会引发异常。