[英]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.