【问题标题】:Dgraph regex query with variables when using Dgraph Go client QueryWithVars使用 Dgraph Go 客户端 QueryWithVars 时使用变量的 Dgraph 正则表达式查询
【发布时间】:2018-04-18 20:08:13
【问题描述】:

在使用 Dgraph go 客户端时,是否可以在正则表达式搜索中使用变量?

我们可以使用 SprintF 构建查询,但这不安全。

q :=query Search($searchterm: string) {
        subdomains(func: regexp(name, /^.*$searchterm/)) {
        uid:uid
        name:name
    }
}

以下查询不会返回任何结果,即使它们存在。

q := `query Search($searchterm: string) {
        subdomains(func: regexp(name, /$searchterm/)) {
            uid:uid
            name:name
        }
    }`

或者这个

q := `query Search($searchterm: string) {
        subdomains(func: regexp(name, /.*$searchterm.*/)) {
            uid:uid
            name:name
        }
    }`

然后使用 txn.QueryWithVars(ctx, q, variableMap) 将查询发送到 dgraph

编辑:这是一个错误。

【问题讨论】:

  • 关于您的示例代码的任何内容均无效。尝试从可编译的代码开始。
  • 这是使用 Go 客户端进行的 dgraph 查询的一部分。它编译。
  • 不,它不编译。这与有效的 Go 完全不同。 See here.
  • Dgraph 开发人员已修复此问题。 github.com/dgraph-io/dgraph/pull/2353

标签: regex variables go dgraph


【解决方案1】:

不是你这样做的方式。但是您可以通过以正常方式连接字符串来构建动态正则表达式模式:

re, err := regexp.Compile("ˆ.*" + regexp.QuoteMeta(searchTerm))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 2023-03-11
    相关资源
    最近更新 更多