In Postgresql, I want to call 3rd party libraries like moment.js or AWS lambda JS Client to invoke serverless functions from within the DB. I don't see any docs or examples how to do so: https://github.com/plv8/plv8/blob/master/README.md
Is this possible and where can I find examples of how to 'import' or 'require' additional libraries?
The plv8 language is trusted so there is no way to load anything from the file system. However you can load modules from the database.
Create a table with source code of a module and load it using select
and eval()
. A simple example to illustrate the idea:
create table js_modules (
name text primary key,
source text
);
insert into js_modules values
('test', 'function test() { return "this is a test"; }' );
Load the module from js_modules
in your function:
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)
You can find a more elaborate example with an elegant require()
function in this post: A Deep Dive into PL/v8.. Its is based on plv8.start_proc
(see also a short example here).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With