如何通过HTTP API提交JSON在SurrealDB中创建记录链接?
在SurrealDB中通过HTTP API提交JSON创建记录链接
SurrealDB官方文档确实没详细说明HTTP API创建记录链接的方法,但实际有两种明确方式,可区分普通字符串和表名:记录ID格式的记录引用:
方法一:用$ref指定明确记录链接
这是最稳妥的方式,通过带$ref键的JSON对象,明确告知SurrealDB这是一条记录引用,而非普通字符串。
举个例子:要创建一条order记录,关联到person表中ID为tobiak777的用户,提交的JSON如下:
{ "customer": {"$ref": "person:tobiak777"}, "order_number": "ORD-12345" }
将该JSON通过POST请求发送到SurrealDB的表接口即可,比如http://你的SurrealDB地址/db/你的数据库/ns/你的命名空间/db/order。
方法二:直接传递表名:记录ID格式的字符串
如果字符串严格符合[表名]:[记录ID]的格式,SurrealDB会自动识别为记录链接,无需额外包装。
同样以上述场景为例,JSON可简化为:
{ "customer": "person:tobiak777", "order_number": "ORD-12345" }
但需注意两个细节:
- 表名和记录ID中不能包含冒号,如果记录ID必须带冒号,建议使用第一种
$ref方式 - 若业务场景需要存储
person:xxx格式的普通字符串(不想被识别为记录链接),需用$string包装,比如{"$string": "person:tobiak777"},这样会被当作普通文本存储
验证链接是否生效
提交后可通过GET请求查询该记录,返回结果会显示关联的完整记录信息,示例如下:
{ "id": "order:ord-12345", "customer": {"id": "person:tobiak777", "name": "Tobi"}, "order_number": "ORD-12345" }
额外提醒
- 确保目标记录已存在,否则创建的链接会无效(SurrealDB允许创建指向不存在记录的链接,但后续查询需注意处理)
- 使用
$ref时,其值必须是有效的记录ID格式,否则会被当作普通JSON对象处理
内容的提问来源于stack exchange,提问作者tobiak777
相关产品推荐
相关产品推荐

