繁体   English   中英

Fastify Typescript 请求查询

[英]Fastify Typescript request query

我正在尝试在 Fastify 之后将一个简单的端点与 Typescript 文档放在一起:

https://www.fastify.io/docs/v3.1.x/TypeScript/

export default async function foo(fastify: any) {
       const MyInstance = new Foo(fastify.db);
       app.get<{ Querystring: IQueryString, Headers: IHeaders }>(
           "/foo",
           async (request: FastifyRequest, reply: FastifyReply) => {
              console.log(request.query); // *prints query object*
              const { queryObj } = request.query; // *Gives error: Object is of type 'unknown'*
              const result = await MyInstance.getFoo(queryObj);
              reply.status(200).send(result);
           }
       );
   }

为什么在我尝试访问request.query object 时出现错误,我该如何解决?

默认情况下FastifyRequest.query的类型RequestQuerystringDefault映射到unknown ,因为人们无法猜测您要为其设置的属性/类型。

如果您为某个请求的query定义了类型,只需定义该请求类型并使用它:

type MyRequest = FastifyRequest<{
  Querystring: { queryObj: MyQueryObject }
}>

然后将其指定为预期的请求类型:

 async (request: MyRequest, reply: FastifyReply) => {
   const { queryObj } = request.query // Ok
 }

如果您编写的代码看起来像 Express.js,请尝试以下代码:

 app.get('/foo', async (req: FastifyRequest<{ Params: { name: string, }; }>, rep: FastifyReply,) => { const name = req.params.name // string })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM