PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Kann die plv8-JavaScript-Spracherweiterung Bibliotheken von Drittanbietern aufrufen?

Der plv8-Sprache wird vertraut, daher gibt es keine Möglichkeit, etwas aus dem Dateisystem zu laden. Sie können jedoch Module aus der Datenbank laden.

Erstellen Sie eine Tabelle mit Quellcode eines Moduls und laden Sie diese mit select und eval() . Ein einfaches Beispiel zur Veranschaulichung der Idee:

create table js_modules (
    name text primary key,
    source text
);

insert into js_modules values
('test', 'function test() { return "this is a test"; }' );

Laden Sie das Modul aus js_modules in Ihrer Funktion:

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) 

Ein ausführlicheres Beispiel finden Sie mit einem eleganten require() Funktion in diesem Beitrag:A Deep Dive into PL/v8 . . Es basiert auf plv8.start_proc (Siehe auch ein kurzes Beispiel hier ).