From e09702a7b0ee2f27fb42ba707b2529d0ccd6d351 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Tue, 13 Dec 2022 13:41:46 +0000 Subject: [PATCH] fix: handle existing arrays --- src/utils/body.ts | 10 ++++++---- test/body.test.ts | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/utils/body.ts b/src/utils/body.ts index 508976f0..c490a55b 100644 --- a/src/utils/body.ts +++ b/src/utils/body.ts @@ -67,12 +67,14 @@ export async function readBody (event: H3Event): Promise { const form = new URLSearchParams(body); const parsedForm: Record = Object.create(null); for (const [key, value] of form.entries()) { - if (key in parsedForm && !Array.isArray(parsedForm[key])) { - parsedForm[key] = [parsedForm[key]]; - parsedForm[key].push(value); - } else { + if (!(key in parsedForm)) { parsedForm[key] = value; + continue; + } + if (!Array.isArray(parsedForm[key])) { + parsedForm[key] = [parsedForm[key]]; } + parsedForm[key].push(value); } return parsedForm as unknown as T; } diff --git a/test/body.test.ts b/test/body.test.ts index b00a3177..dc0ab83a 100644 --- a/test/body.test.ts +++ b/test/body.test.ts @@ -118,12 +118,12 @@ describe("", () => { expect(body).toMatchObject({ field: "value", another: "true", - number: ["20", "30"] + number: ["20", "30", "40"] }); return "200"; })); const result = await request.post("/api/test") - .send("field=value&another=true&number=20&number=30"); + .send("field=value&another=true&number=20&number=30&number=40"); expect(result.text).toBe("200"); });