mongodb - Mongoose 6 使用 Typescript 的 $group -> 属性 '_id' 与索引签名不兼容
我正在从 js 迁移到 ts,同时也从 mongoose 5.8 升级到 6.1 以下代码之前可以正常工作
let getActionsTakenByApp = (store_url: string) => {
return AppAction.aggregate([
{
$match: { store_url }
},
{
$group: {
_id: {
'action_type': '$action_type'
},
count: {
$sum: 1
}
}
}
]);
}
但是现在 TypeScript 显示这个错误。
Type '{ _id: { action_type: string; }; count: { $sum: number; }; }' is not assignable to type '{ [key: string]: { $count?: any; $accumulator?: any; $addToSet?: any; $avg?: any; $first?: any; $last?: any; $max?: any; $mergeObjects?: any; $min?: any; $push?: any; $stdDevPop?: any; $stdDevSamp?: any; $sum?: any; }; _id: any; }'. Property '_id' is incompatible with index signature.
Type '{ action_type: string; }' is not assignable to type '{ $count?: any; $accumulator?: any; $addToSet?: any; $avg?: any; $first?: any; $last?: any; $max?: any; $mergeObjects?: any; $min?: any; $push?: any; $stdDevPop?: any; $stdDevSamp?: any; $sum?: any; }'.
Object literal may only specify known properties, and ''action_type'' does not exist in type '{ $count?: any; $accumulator?: any; $addToSet?: any; $avg?: any; $first?: any; $last?: any; $max?: any; $mergeObjects?: any; $min?: any; $push?: any; $stdDevPop?: any; $stdDevSamp?: any; $sum?: any; }'.ts(2322)
我对 TypeScript 还很新,正在尝试找出问题所在。任何帮助都将不胜感激!谢谢!!
答案#1
这是在6.1.0中引入的一个错误
一旦相关的 PR 被合并并发布,这个问题就会被修复。
与此同时,你可以降级到较低版本。