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

如何在Gel(EdgeDB)中使用动态键访问元组属性?

关于元组实现动态语言键取值的问题

用元组无法实现你想要的动态按语言键取值的需求,原因是元组的键属于编译时确定的静态成员,只能通过.语法访问固定的键名,不支持通过动态字符串变量进行索引访问——这是这类强类型元组的设计限制,它更适合键集合固定、编译时已知的场景。

如果你需要动态根据语言键获取对应名称,推荐使用JSON对象或者字典类型(以EdgeDB为例):

方案1:使用JSON类型

定义类型时将i18nName设为json类型:

type Category {
  required property i18nName: json;
}

插入数据时传入结构化的JSON对象:

insert Category {
  i18nName := {"pl": "bober", "en": "beaver"}
};

查询时即可通过动态变量索引:

with lng := <str>$lng
select Category.i18nName[lng];

方案2:使用字典类型(EdgeDB 2.0+支持)

如果你的EdgeDB版本支持dict类型,可以直接定义键值对结构:

type Category {
  required property i18nName: dict<str, str>;
}

查询方式和JSON一致,同样支持动态变量索引:

with lng := <str>$lng
select Category.i18nName[lng];

这两种类型都是为动态键值场景设计的,完全能满足你根据动态语言键获取对应名称的需求。

内容的提问来源于stack exchange,提问作者Mist

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:12:34