De plv8-taal is vertrouwd, dus er is geen manier om iets van het bestandssysteem te laden. U kunt echter wel modules uit de database laden.
Maak een tabel met de broncode van een module en laad deze met select
en eval()
. Een eenvoudig voorbeeld om het idee te illustreren:
create table js_modules (
name text primary key,
source text
);
insert into js_modules values
('test', 'function test() { return "this is a test"; }' );
Laad de module van js_modules
in jouw functie:
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)
Je kunt een uitgebreider voorbeeld vinden met een elegante require()
functie in dit bericht:Een diepe duik in PL/v8 .
. Het is gebaseerd op plv8.start_proc
(zie ook een kort voorbeeld hier
).