数据库

plv8: JavaScript语言扩展


plv8 扩展允许您在 Postgres 中使用 JavaScript。

概述

虽然 Postgres 原生运行 SQL,但它也可以运行其他过程式语言。 plv8 允许您运行 JavaScript 代码——具体来说是在 V8 JavaScript 引擎上运行的任何代码。

它可以用于数据库函数、触发器、查询等场景。

启用扩展

  1. 进入 Dashboard 的数据库页面
  2. 点击侧边栏中的 Extensions
  3. 搜索 "plv8" 并启用该扩展

创建 plv8 函数

使用 plv8 编写的函数与其他 Postgres 函数的写法类似,只需将 language 标识符设置为 plv8

1
2
3
4
5
6
create or replace function function_name()returns void as $$ // V8 JavaScript // 此处编写 // JavaScript代码$$ language plv8;

您可以像调用其他 Postgres 函数一样调用 plv8 函数:

1
select function_name();

示例

标量函数

标量函数是指接收用户输入并返回单个结果的函数。

1
2
3
4
5
6
7
create or replace function hello_world(name text)returns text as $$ let output = `你好,${name}!`; return output;$$ language plv8;

执行 SQL

您可以使用 plv8.execute 函数plv8 代码中执行 SQL。

1
2
3
4
5
6
7
8
9
10
create or replace function update_user(id bigint, first_name text)returns smallint as $$ var num_affected = plv8.execute( 'update profiles set first_name = $1 where id = $2', [first_name, id] ); return num_affected;$$ language plv8;

集合返回函数

集合返回函数是指返回完整结果集的函数,例如表中的多行数据。

1
2
3
4
5
6
7
8
9
10
11
create or replace function get_messages()returns setof messages as $$ var json_result = plv8.execute( 'select * from messages' ); return json_result;$$ language plv8;select * from get_messages();

相关资源