繁体   English   中英

Mongodb/Mongoose 类型聚合不兼容

[英]Mongodb/Mongoose types aggregation incompatibility

将 nodejs 服务器迁移到较新版本的 mongoose 后,我遇到了一个奇怪的 typescript 错误,涉及 $sort 聚合。

我的版本

依赖项“猫鼬”:“^6.2.10”,

开发依赖 "@types/mongoose": "^5.11.97", "typescript": "^4.6.3"

我简化代码。

export const timetableTest = (group: string): Promise<IGroupTimetableEvents[]> => {
    const agg = [{ $match: { group } }, { $sort: { reference: 1 } }];
    const result = GroupEvent.aggregate(agg).exec();
    return result;
};

GroupEvent.aggregate(agg) 不接受agg变量,我看到以下消息。

'({ $match: { group: string; }; $sort?: undefined; } | { $sort: { reference: number; }; $match?: undefined; })[]' 类型的参数不可分配给“PipelineStage[]”类型的参数。 输入'{ $match: { group: string; }; $排序?:未定义; } | { $排序:{ 参考:数字; }; $匹配?:未定义; }' 不可分配给类型 'PipelineStage'。 输入 '{ $sort: { 参考:数字; }; $匹配?:未定义; }' 不可分配给类型 'PipelineStage'。 输入 '{ $sort: { 参考:数字; }; $匹配?:未定义; }' 不可分配给类型 'Sort'。 属性“$sort”的类型不兼容。 输入'{参考:数字; }' 不可分配给类型 'Record<string, 1 | -1 | { $元:“textScore”; }>'。 属性“引用”与索引签名不兼容。 类型“数字”不可分配给类型“1 | -1 | { $元:“textScore”; }'.ts(2345)

我看到问题来自 TS,不过,我提供了 1(数字),看起来不被接受。

类型“数字”不可分配给类型“1 | -1 | { $元:“textScore”; }'

在迁移之前,我没有遇到这个错误,编译/代码执行都很好。

请让我知道我错过了什么。

我目前面临同样的问题,作为一种解决方法,我想出了这个:

const sort: Record<string, | 1 | -1 | {$meta: "textScore"}> = { reference: 1 };

export const timetableTest = (group: string): Promise<IGroupTimetableEvents[]> => {
    const agg = [{ $match: { group } }, { $sort: sort }];
    const result = GroupEvent.aggregate(agg).exec();
    return result;
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM