我的控制器中有请求,@Param
是MongoId的字符串版本。如果我使用无效的字符串格式(与MongoId格式不匹配)调用此请求,则该请求将一直执行,直到MongoDB调用抛出内部服务器错误。
我如何验证,例如"aaa"
或"ANWPINREBAFSOFASD"未被验证,并在我的请求中尽早停止
电流控制器endpoint:
@Get(':id')
@ApiOperation({ summary: 'Get nice information' })
findOne(
@Param('id') id: string) {
return this.niceService.findOne(id);
}
该服务称为:
async findOne(id: string): Promise<NiceDocument> {
const niceResult: NiceDocument = await this.NiceSchema.findById(id)
if (!niceResult) {
throw new NotFoundException()
}
return table
}
答案是使用自定义验证管道:
创建管道并将其导出:
import { ArgumentMetadata, BadRequestException, Injectable, PipeTransform } from "@nestjs/common";
import {ObjectId} from 'mongodb'
@Injectable()
export class ValidateMongoId implements PipeTransform<string> {
transform(value: string, metadata: ArgumentMetadata): string{
if(ObjectId.isValid(value)){
if((String)(new ObjectId(value)) === value)
return value;
throw new BadRequestException
}
throw new BadRequestException
};
}
使用控制器中的管道验证字符串
@Get(':id')
@ApiOperation({ summary: 'Get nice information' })
findOne(
@Param('id', ValidateMongoId) id: string) {
return this.niceService.findOne(id);
}
或者,如果您使用mongoDB而不是猫鼬,您可以将管道中的返回类型从string更改为ObjectId,猫鼬支持字符串格式的带有id的请求
问题内容: 我想要最简单的故障安全测试来检查JavaScript中的字符串是否为正整数。 对于各种非整数值返回true,并且为浮点字符串返回整数,例如“ 2.5”。而且我也不想使用某些jQuery插件。 问题答案: 为您提供两个答案: 基于解析 正则表达式 请注意,在两种情况下,我都将“正整数”解释为包括,即使它不是正数。如果您不愿意,我会提供注释。 基于解析 如果希望它是在合理值范围内的归一化十
我想要最简单的故障安全测试来检查JavaScript中的字符串是否为正整数。 为所有类型的非整数值返回true,为浮点字符串返回整数,如“2.5”。我也不想使用jQuery插件。
问题内容: 如何检查字符串是否是Java中的URL? 问题答案: 您可以尝试用它创建一个对象。如果该URL不正确,则会引发a。
我的Java应用程序“A”正在从另一个Java应用程序获取移动电话号码作为字符串。因此,在应用程序A获得手机号码字符串后,我需要验证该手机号码字符串中是否只有数字。为了验证我使用了如下的简单逻辑, 我正在检查I=1,因为国家代码的第一个字符将是“”。这种方法是O(n)。还有另一种方法,我们可以使用。这将抛出<代码> No.MultFrimeExtry,以便我们可以捕获并考虑它是一个字母数字字符串。
问题内容: 如何最好地检查字符串输入是否为编码的有效Java变量?我确定我不是第一个愿意这样做的人。但是也许我缺少正确的关键字来找到有用的东西。 最好的可能是RegEx,它检查以下内容: 以字母开头 然后可以包含数字,字母 可以包含一些特殊字符,例如’_’(哪个?) 可能不包含空格分隔符 问题答案: 编辑:并且,如@Joey所指示,您还应该过滤掉关键字和保留字。
本文向大家介绍C#验证给定字符串是否为数字的方法,包括了C#验证给定字符串是否为数字的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#验证给定字符串是否为数字的方法。分享给大家供大家参考。具体分析如下: 这段C#代码用于验证给定的字符串是否为数字,不能用于验证负数,字符串中只能出现数字和小数点,否则认为不是数字,不验证数字的长度,也就是说,给定的字符串再长,哪怕是1万个字符,也可以