Typescript 我得到了一个验证管道';当我在邮递员身上传递电子邮件和密码时出错
以下是错误的屏幕截图: 以下是DTO的代码:Typescript 我得到了一个验证管道';当我在邮递员身上传递电子邮件和密码时出错,typescript,validation,pipe,postman,nestjs,Typescript,Validation,Pipe,Postman,Nestjs,以下是错误的屏幕截图: 以下是DTO的代码: import {IsString, IsInt,IsEmail,IsNotEmpty, IsNumberString, IsIn} from 'class-validator' export class logindto{ @IsEmail() username:String @IsNotEmpty() password:String } 以下是控制器的代码: @Post('login') log(@Body(
import {IsString, IsInt,IsEmail,IsNotEmpty, IsNumberString, IsIn} from 'class-validator'
export class logindto{
@IsEmail()
username:String
@IsNotEmpty()
password:String
}
以下是控制器的代码:
@Post('login')
log(@Body('username')username:logindto,@Body('password')password:logindto):any{
return this.crudservice.loginsys(username,password)
}
以下是服务守则:
export class CrudService {
constructor(@InjectModel('student') private readonly student:Model<studentmodel>){}
async loginsys(username,password):Promise<any>{
const cred=this.student.findOne({username:username,password:password})
return cred
}
}
我已经传递了表单数据的标题:application/x-www-url-form-encoded或application/json。但是仍然得到了相同的错误通过在
@Body()
装饰器中包含字符串,您告诉nest查找请求主体的'username'
属性,但您也在说req.body.username
应该是logindto
,所以类验证器期望找到req.body.username.username
和req.body.username.password
以及req.body.password.username
。要解决此问题,请从@Body()
装饰器中删除字符串。如果需要分别获取用户名和密码,可以使用对象解构,但我建议在方法体的签名之外进行解构
@Post('login'))
日志(@Body()登录名:logindto,):任意{
const{username,password}=login;//我尝试了您的方法,但出现错误:CastError:Cast-to-string值“{username:”失败xyz20@test.com“,密码:”xyz@1234模型“学生”的路径“密码”处的“}”modelstudent
与此有什么关系?这听起来像是一个完全不同的问题。我添加了我的模式和模型的代码,并更新了我的服务代码,我是如何使用StudentModel的。我仍然不知道你对我的建议做了什么,现在有什么失败之处。你使用了任何反循环吗我将使用多个@Body()
修饰符?您是否检查了控制器或服务中用户名和密码的值?我只是删除了我在@Body()修饰符中写入的“用户名”和“密码”。是的,我将多个@Body()修饰符用于我的用户名和密码,我的用户名和密码类似于@Body()用户名:logindto,@Body()密码:像这样登录。我的主要目的是对用户名和密码使用验证管道。当应用验证管道时,我遇到了问题中提到的错误。当我删除管道时,我得到了所需的输出。我的问题是,当应用管道时,我没有得到所需的输出
import * as mongoose from 'mongoose'
export const studentschema=new mongoose.Schema({
name:{type:String,required:true},
std:{type:Number},
rollno:{type:Number},
section:{type:String},
username:{type:String},
password:{type:String}
});
export interface studentmodel extends mongoose.Document{
readonly name:String,
readonly std:Number,
readonly rollno:Number,
readonly section:string,
readonly username:string,
readonly password:string
}