如何通过HTTP API调用SurrealDB自定义函数并传入JSON参数
SurrealDB自定义函数(类存储过程)HTTP调用示例
1. 定义自定义函数
先通过SurrealQL定义类存储过程的函数,接收JSON对象参数完成数据操作。以下是常用场景的函数定义:
创建用户函数
DEFINE FUNCTION create_user($user: OBJECT) { CREATE user SET name = $user.name, email = $user.email, age = $user.age, created_at = time::now(); RETURN SELECT * FROM user WHERE email = $user.email LIMIT 1; }
更新用户函数
DEFINE FUNCTION update_user($user: OBJECT) { UPDATE user SET name = $user.name, age = $user.age WHERE email = $user.email; RETURN SELECT * FROM user WHERE email = $user.email LIMIT 1; }
查询用户函数
DEFINE FUNCTION get_user($email: STRING) { RETURN SELECT * FROM user WHERE email = $email LIMIT 1; }
2. HTTP API调用示例
通过/sql端点提交请求,传递函数调用语句和JSON参数。
通用请求头
POST http://<your-surrealdb-host>:8000/sql Content-Type: application/json Authorization: Basic <base64编码的用户名:密码> NS: your-namespace DB: your-database
调用创建用户函数
请求体(JSON格式):
[ "CALL create_user($user);", { "user": { "name": "张三", "email": "zhangsan@example.com", "age": 28 } } ]
调用更新用户函数
请求体(JSON格式):
[ "CALL update_user($user);", { "user": { "email": "zhangsan@example.com", "name": "张三_更新", "age": 29 } } ]
调用查询用户函数
请求体(JSON格式):
[ "CALL get_user($email);", { "email": "zhangsan@example.com" } ]
注意事项
- 函数参数类型需与传入的JSON结构匹配(如
OBJECT对应JSON对象,STRING对应字符串) - 请求体为数组:第一个元素是SurrealQL调用语句,第二个元素是参数对象,键名需与函数变量名一致(如
$user对应参数中的user) - 确保请求用户拥有执行函数及对应表操作的权限
内容的提问来源于stack exchange,提问作者tobiak777
相关产品推荐
相关产品推荐

