You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 16:33:27