Skip to content

AS in Dynamic Fields Selection Not Working #894

@chauhankiran

Description

@chauhankiran

I've a columns variable in which I'm conditionally adding column name based on whether field is enable or not. There is one field createdBy which I want to select as creator.email AS creatorEmail where creator is an alias of the users table. Following is the sample code.

let columns = [];

if (view.field === "id") {
  columns.push("companies.id");
}

// ... other fields condition

if (view.field === "createdBy") {
  columns.push("creator.email AS creatorEmail");
}

Then following the query I'm trying to run.

sql`
  select
    ${sql(columns)}
  from
    companies
  join
    users as creator
  on
    companies."createdBy" = creator.id`

But, it throw error as

PostgresError: column creator.email AS creatorEmail does not exist

Postgres condering complete string as column name and not As as keyword of Postgres.

Note: I saw one issue where someone suggested to use fragment. But, can I've an example of it? I tried with many different syntax and it doesn't work.

Activity

sumarlidason

sumarlidason commented on Jun 21, 2024

@sumarlidason

@chauhankiran did you find a workaround?

chauhankiran

chauhankiran commented on Jun 22, 2024

@chauhankiran
Author

Not exactly per se. But, I've use .unsafe() as a workaround.

I've replaced columns array to string and then concatenating the columns instead of pushing in it.

let columns = "";

if (view.field === "id") {
  columns += "companies.id,";
}

// ... other fields condition

if (view.field === "createdBy") {
  columns += 'creator.email as "creatorEmail",';
}

I'm using sql.unsafe() within SELECT.

sql`
  select
    ${sql.unsafe(columns)}
  from
    companies
  join
    users as creator
  on
    companies."createdBy" = creator.id`
linked a pull request that will close this issue on Dec 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @sumarlidason@chauhankiran

      Issue actions

        AS in Dynamic Fields Selection Not Working · Issue #894 · porsager/postgres