【发布时间】:2022-02-15 17:40:38
【问题描述】:
我有一个 graphql 查询,我想获取变量名称和类型。我正在使用 Apollo Client 来处理我的查询,但我相信没有提供任何东西来获取变量名称。是否有提供该信息的 API 或库?
查询示例:
query Integrations($count: Int, $isAdmin: Boolean, $services: String) {
repository(uri: "$count: Int, $isAdmin: Boolean, $services: String") {
integrations(
filter: { limit: $count, ignoreCase: $isAdmin, id: $services }
) {
id
}
}
}
我想收到这样的对象:
{
"count": "Int",
"isAdmin": "Boolean",
"services": "String"
}
请注意,这种情况可以通过正则表达式来处理,例如:
[^"$\s]*\$([a-zA-Z0-9]*):\s*(String|Int|Float|Boolean)[^"$\s]*
不幸的是,还要匹配字符串中的变量(第 2 行)
有什么想法吗?
【问题讨论】:
-
如果你匹配引号之间的字符串作为替代呢?见
(?<!\\)(?:\\{2})*"[^"\\]*(?:\\.[^"\\]*)*"|\$([^\W_]*):\s*(String|Int|Float|Boolean)demo。只取第一组不为空的匹配项。 -
感谢您的回答@WiktorStribiżew。效果很好:)。您能否回答问题,以便我标记为已回答?
-
您是否使用
gql`…`文字进行查询? -
在这种情况下,使用正则表达式非常麻烦,并且无法很好地扩展。对于快速的一次性更改是可以的,但否则我宁愿为此使用像 graphql-parser 这样的专用库。
-
@Bergi,是的,我愿意。
标签: javascript regex graphql apollo-client