本文介绍了plv8 JavaScript语言扩展可以调用第三方库吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Postgresql中,我想调用第三方数据库,例如moment.js或AWS lambda JS Client,以从数据库中调用无服务器功能。我没有看到任何文档或示例该怎么做:

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?

推荐答案

plv8语言是受信任的,因此无法从文件中加载任何内容系统。但是,您可以从数据库中加载模块。

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.

使用模块的源代码创建表,并使用 select eval加载表()。一个简单的例子来说明这个想法:

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"; }' );

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()在这篇文章中的功能:。它基于 plv8.start_proc (另请参见此处的简短示例)。

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).

这篇关于plv8 JavaScript语言扩展可以调用第三方库吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-01 02:22