簡體   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