我们在后端使用Fastify
作为框架来处理Node.js。
我们有一个用于验证所使用的输入的模式。
这是schema.ts中的模式
export const profileSchema = {
type: 'object',
properties: {
FirstName: {
type: 'string',
pattern: '^([a-zA-z]{2,100})+$'
},
LastName: {
type: 'string',
pattern: '^([a-zA-z]{2,100})+$'
},
MobilePhone: {
type: 'string',
pattern: '[0-9]{10}',
}
},
} as const
main.ts
import { profileSchema } from './schema'
const app = fastify()
app.post(`/createProfile`,
{
schema: {
body: profileSchema,
}
},
createProfile
)
然而,当我们将移动的号码作为Number而不是String传递时,它仍然是working,而不是抛出**error
**。
输入
{
"FirstName": "John",
"LastName": "Doe",
"MobilePhone": 9876543210
}
理想情况下,因为我们将移动的号码作为Number传递,所以模式应该验证并抛出错误。
1条答案
按热度按时间djmepvbi1#
创建fastify示例时,需要将
coerceTypes
设置为false默认情况下,这将禁用对所有路由和所有方案的强制。如果只需要禁用对特定路由或方案的强制,则可以使用
setValidatorCompiler
函数