我有一个 User 模型,我想执行通用聚合。表示我传递给它执行的函数的任何对象数组。
这是getUser函数的示例
ROW
我把它作为参数传递
public async getUser(aggregate: object): Promise<ResponseDTO> {
let response = {} as ResponseDTO;
const [err, user] = await To(User.aggregate(aggregate));
if (user) {
response = { success: true, data: user, message: "User fround" };
}
else
response = { success: false, message: "User not fround" };
return response;
}
但是我无法运行该程序,它在 getUser 函数上给了我语法错误
*(method) Model
“Aggregate
我试图在 getUser 参数中将对象更改为任何、数组或数组
PS:我使用 node 和 typescript,IDE 是 VSCode
答案 0 :(得分:0)
Mongoose 查询有自己的类型,您应该使用这些类型来避免此类错误。
您可以直接从 Mongoose 包中为您需要的任何内容导入这些类型。
我强烈推荐使用 Typegoose 包,它有助于创建完全类型化的 MongoDB 模式。并允许您使用这些类型作为响应,查找和更新查询等等! 参考: https://typegoose.github.io/typegoose/docs/guides/quick-start-guide
使用正确类型的示例:
import { FilterQuery } from 'mongoose';
public async getUser(aggregate: FilterQuery<ResponseDTO>): Promise<ResponseDTO> {
let response = {} as ResponseDTO;
const [err, user] = await To(User.aggregate(aggregate));
if (user) {
response = { success: true, data: user, message: "User fround" };
}
else
response = { success: false, message: "User not fround" };
return response;
}