PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Може ли plv8 езиковото разширение на JavaScript да извиква библиотеки на трети страни?

Езикът plv8 е надежден, така че няма начин да се зареди нещо от файловата система. Въпреки това можете да зареждате модули от базата данни.

Създайте таблица с изходния код на модул и я заредете чрез select и eval() . Прост пример за илюстриране на идеята:

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

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

Заредете модула от js_modules във вашата функция:

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) 

Можете да намерите по-сложен пример с елегантен require() функция в тази публикация:Задълбочено потапяне в PL/v8 . . Базиран е на plv8.start_proc (вижте също кратък пример тук ).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Агрегиране на (x,y) облаци от координатни точки в PostgreSQL

  2. Търсете в JSON масив за обект, съдържащ стойност, съответстваща на шаблон

  3. В Django 1.9 каква е конвенцията за използване на JSONField (роден postgres jsonb)?

  4. Сумирайте до достигане на праговата стойност и след това нулирайте брояча

  5. Postgresql ltree заявка за намиране на родител с повечето деца; с изключение на корена