簡體   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