![](/img/trans.png)
[英]request.query does not print the query in Fastify (querystring)
[英]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.