Я застрял с этим в течение некоторого времени. У меня есть тип / роль пользователя, который должен иметь значение по умолчанию, если тип / роль пользователя не передается из тела. если тип / роль пользователя будет передан, будет использован пользовательский.
Буду признателен, если кто-нибудь сможет мне помочь с этим. Я могу использовать эту идею в других компонентах с аналогичными структурами. Спасибо
Это ошибка, которую я получаю, когда инициирую регистрацию
{"statusCode": 400, "message": ["usertype.nested свойство usertype должно быть либо объектом, либо массив "]," ошибка ":" Неверный запрос "}
Как передать тип пользователя / роль из тела?
Как мне установить значение по умолчанию в схеме / документе / dto?
Как мне справиться с этим в службе?
Это Вот что я сделал
Схема
import * as mongoose from 'mongoose';
export const UserSchema = new mongoose.Schema({
userId: {
type: mongoose.SchemaTypes.ObjectId,
},
firstname: {
type: String,
required: true
},
password: {
type: String
},
email: {
type: String,
required: true,
},
usertype: {
type: mongoose.Schema.Types.ObjectId,
ref: 'UserType',
default: ''
},
})
Интерфейс
import { Document } from 'mongoose';
import { UserType } from '../../usertype/interface/usertype.interface'
export interface User extends Document {
userId: string;
firstname: string;
password: string;
email: string;
usertype: UserType;
}
Вот созданный
import { ApiProperty } from '@nestjs/swagger';
import { IsString, MinLength, IsEmail, ValidateNested } from 'class-validator';
import { UserType } from 'src/usertype/interface/usertype.interface';
export class CreateUserDto {
@ApiProperty()
@IsString()
firstname: string;
@ApiProperty()
@MinLength(6, { message: "Your Password should be at least 6 characters" })
password: string;
@ApiProperty()
@IsEmail()
email: string;
@ValidateNested()
usertype: UserType;
}
//register user
async register(createDTO: CreateUserDto, userType: CreateUserTypeDTO): Promise<User> {
const { email } = createDTO;
const user = await this.userModel.findOne({ email })
if (user) {
throw new HttpException('User already exists', HttpStatus.BAD_REQUEST);
}
const createdUser = await this.userModel.create({
...createDTO,
usertype: userType
});
await createdUser.save();
return createdUser;
}