Open
Description
Hello,
in my table "account" the column "contact" is of the type jsonb
. Using the following interface, I get an TS Error:
error: TS2769 [ERROR]: No overload matches this call.
Overload 1 of 2, '(first: TemplateStringsArray, ...rest: never): PendingQuery<Row[]>', gave the following error.
Argument of type 'string' is not assignable to parameter of type 'never'. Overload 2 of 2, '(template: TemplateStringsArray, ...parameters: readonly ParameterOrFragment[]): PendingQuery<Row[]>', gave the following error.
Argument of type 'object' is not assignable to parameter of type 'ParameterOrFragment'.
return await sql`
I have two questions:
- Is it correct to pass an object like this for
jsonb
? - If yes, what could I do to avoid the TS error?
Thank you very much!
interface AccountData {
owner: string;
email: string;
contact: object;
password: string;
}
async function insertAccount(
{ owner, email, contact, password }: AccountData,
) {
return await sql`
INSERT INTO public.account (owner, email, contact, hashed_password)
VALUES (${owner}, ${email}, ${contact}, crypt(${password}, gen_salt('md5')))
`;
}
const dataJane = {
owner: "Jane Doe",
email: "[email protected]",
contact: { "phone": "12345" },
password: "password123",
};
await insertAccount(dataJane);