javascriptnode.jsschemafastifyrequest.querystring

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


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