我有两个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'.如果我尝试进行类型转换,它只会报告'Object‘类型中缺少'length’属性。
当我希望得到一个结果数组时,如何使用lean?
如果我简单地省略lean,...note就能正常工作。
发布于 2017-07-21 01:47:59
Mongoose类型定义不是很好,所以你可以使用下面的命令来修复它:
let somethings:Something[];
SomethingDocument.find({color:'blue'}).lean().then((res) => { somethings = res as any;});顺便说一句,如果你能做到这一点,我建议你使用await (你必须将TS编译成现代的Ecma版本):
const somethings = await SomethingDocument.find({color:'blue'}).lean() as Something[];请注意,前一个版本捕获了.catch上的错误,但第二个版本将抛出异常。
https://stackoverflow.com/questions/45221722
复制相似问题