Имена динамических таблиц в pg-promise

Я хотел бы динамически выбирать таблицу в запросе pg-promise. Следующий код не работает, любая помощь приветствуется!

return db.any('SELECT * from $1', table_name)

Сообщение об ошибке, которое я получаю:

error:  error: syntax error at or near 

Я не уверен, что мне следует использовать помощника, как описано в этой ссылке: https://vitaly-t.github.io/pg-promise/helpers.TableName.html


person Ron I    schedule 08.01.2020    source источник


Ответы (1)


Прямой подход — через имена SQL:

await db.any('SELECT * from $1:name', [table]);
// or
await db.any('SELECT * from ${table:name}', {table});

И со схемой:

await db.any('SELECT * from $1:name.$2:name', [schema, table]);
// or
await db.any('SELECT * from ${schema:name}.${table:name}', {schema, table});

Более общий подход — через TableName:

const tn = new pgp.helpers.TableName({schema, table});

await db.any('SELECT * from $1', [tn]);
// or
await db.any('SELECT * from ${tn}', {tn});
person vitaly-t    schedule 08.01.2020