Express how to append queries with the same property?

Viewed 12

Right now im trying to write a query deconstruction, it should look like this

describe("Deconstruct query params", () => {
  it("should deconstruct the desired query param such as id=1,2,3,4 into id=1&id=2&id=3&id=4", async () => {
    const req: RequestCustom = {
      extra : {
        user: {}
      },
      query: {
        id: "1,2,3,4",
      },
      
    };
    const res = {};
    const next = jest.fn();
    await deconstructQueryParams(["id"])(
      (req as unknown) as express.Request,
      res as express.Response,
      next
    );
    expect(req.query).toEqual(
      "id=1&id=2&id=3&id=4"
    );
  });
});

For this I try and use

export const deconstructQueryParams = (params: Array<string>) => async (
  req: Request,
  res: Response,
  next: NextFunction
) => {
  params.forEach((param) => {
    if (req.query[param]) {
      const paramArr = req.query[param].split(",");
      delete req.query[param]
      paramArr.forEach((value: string) => {
        req.query.append(param, value); //append doesnt exist
      });
    }
    
  });

  next();
}

The problem with this, is that I cant use

req.query.id=1
req.query.id=2
.....

Because those queries will be replaced, when I need "id=1&id=2&id=3&id=4"

But apparently req.query.append doesnt exist, so I cant duplicate the query properties? How can I do so?

0 Answers
Related