Mongoose 嵌套 ObjectId 数组验证 Dto

Mongoose nested ObjectId Array validation Dto

我有一个看起来像这样的 Dto:

import { Type } from "class-transformer";
import { ArrayMinSize, IsArray, ValidateNested} from "class-validator";
import { ObjectId } from "mongoose";

export class MongoIdDto {
    @IsArray()
    @ValidateNested({each: true})
    @ArrayMinSize(1)
    @Type(() => ObjectId)
    ids: ObjectId[]
}

但这会给我一个错误: 'ObjectId' only refers to a type, but is being used as a value here.

这个错误是怎么出现的?

这是一个常见的导入错误:

ObjectId 可以从 mongoose 和 mongoDB.

导入

猫鼬导入是一个类型

mongodb 导入是 bson ObjectId 类型的 class 表示

因此,要解决此问题,请将您的导入更改为: import { ObjectId } from "mongodb";

但实际上有一个选项可以用这个来验证 MongoIds:

export class MongoIdArrayDto {
    @IsMongoId({each: true})
    @ArrayMinSize(1)
    ids: ObjectId[]
}