request.query does not print the query in Fastify (querystring)

Issue

I searched for ages, but it just wouldn’t print the query, I’ve no idea what I should do. I’m also kind of new to Fastify. Also I’m sending the request to 127.0.0.1/?greeting=something.

const opts = {
  schema: {
    querystring: {
      type: 'object',
      required: ['greeting'],
      properties: {
        greeting: {type: 'string'},
      },
    },

    response: {
      200: {
        type: 'object',
        properties: {
          status: {type: 'object'}, // i've abosulutely no idea what the type should be
        },
      },
    },
  },

  handler: async (request, reply) => {
    reply.send({
      status: request.query,
    })
  }
}

Can someone please help me in resolving this ?

Solution

You don’t see the request.query output because of the response’s schema.

The response schema filters out all the fields that are not defined, so the properties field lists the status key as object without any properties.

You should change it to:

status: { type: 'object', additionalProperties: true }

or adding the greetings property.

You can read about it here: https://github.com/fastify/fast-json-stringify#additionalProperties

Answered By – Manuel Spigolon

Answer Checked By – Pedro (AngularFixing Volunteer)

Leave a Reply

Your email address will not be published.