我有两个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
,那么一切正常。
答案 0 :(得分:3)
Mongoose类型定义不太好恕我直言,所以你可以使用它来解决它:
AWSCLI
顺便说一下,如果你能够(你必须将TS编译成现代的Ecma版本),我建议使用let somethings:Something[];
SomethingDocument.find({color:'blue'}).lean().then((res) => { somethings = res as any;});
:
await
请注意,前一个版本会捕获.catch上的错误,但第二个版本会引发异常。