A linguagem plv8 é confiável, então não há como carregar nada do sistema de arquivos. No entanto, você pode carregar módulos do banco de dados.
Crie uma tabela com o código-fonte de um módulo e carregue-a usando
select
e eval()
. Um exemplo simples para ilustrar a ideia:create table js_modules (
name text primary key,
source text
);
insert into js_modules values
('test', 'function test() { return "this is a test"; }' );
Carregue o módulo de
js_modules
na sua função:create or replace function my_function()
returns text language plv8 as $$
// load module 'test' from the table js_modules
var res = plv8.execute("select source from js_modules where name = 'test'");
eval(res[0].source);
// now the function test() is defined
return test();
$$;
select my_function();
CREATE FUNCTION
my_function
----------------
this is a test
(1 row)
Você pode encontrar um exemplo mais elaborado com um elegante
require()
função neste post:A Deep Dive into PL/v8 .
. É baseado em plv8.start_proc
(veja também um exemplo aqui
).